2012-04-23 5 views
3

再生からリダイレクトする際に問題が発生しました!形。私は問題が私がルートをどのように扱っているかにあると思う。ユーザーは、秘密鍵を使用したログインを使用してindex.hmtlを最初に実行するか、access_tokenを含む有効なパスに直接入力するか(qrコードリダイレクトを使用して)、dashboard.htmlにアクセスできるようにする必要があります。次のようにやろうとして何を - 私再生!フレームワークフォームリダイレクトが動作しない

は次のとおりです。

1)ログインのindex.htmlのフォームを使用して(ルート:ここApplication.index)

はindex.htmlの中にあります(私のフォームです):

<form action="@{Dashboard.authenticate()}" method="POST" name="login"> 
    <input name="key" type="password" maxlength="128" value="${flash.key}"> 
    <input class="button" id="btnLogin" type="submit" value="Login"> 
</form> 

2)認証とダッシュボードへのリダイレクトard.html(ルート:Dashboard.dashboard)

public static void dashboard(String access_token) { 
    /* 
     ...some code 
    */ 

    render(username); 
} 


public static void authenticate(String key) { 
    /* 
     ...some code 
    */ 
    dashboard(access_token); 
} 

ここでは私のルートファイルされる:私のようなURL経由(文字列のaccess_tokenは)ダッシュボードに直接呼び出す場合

# Home page 
GET /     Application.index 
POST /dashboard  Dashboard.authenticate 
GET  /dashboard  Dashboard.dashboard 

ダッシュボードルートが正常に動作します: http://localhost:9000/dashboard?access_token=0000 しかし、私は認証(Stringキー)を呼び出すログインフォームを使用してログインしようとすると、このURLを取得しますhttp://localhost:9000/dashboard?access_token&key=1234ここでkeyはauth()関数に送られるvarです。明らかに私の欠点はルートにありますが、私は論理を試して試しましたが、私は100%確信しています。 私はPlay 1.2.4を使用しています 私はこの問題に2日を費やしており、どのような提案にも大変感謝しています。

答えて

0

問題が解決しました。

私が言いたいことを忘れたのは...私はjQuery Mobileも使用していて、問題はPlayと関係していました!ルーティングがjQuery Mobileページのルーティングをオーバーライドしています。

$(document).bind("mobileinit", function(){ 
    $.mobile.ajaxEnabled = false; 
    $.mobile.linkBindingEnabled = false; 
    $.mobile.hashListeningEnabled = false; 
    $.mobile.pushStateEnabled = false; 
    $.mobile.changePage.defaults.changeHash = false; 

}) 

をjQueryのウェブサイト上の指示を使用して::

私は次のスクリプトを追加することにより、ルーティングを無効にhttp://jquerymobile.com/test/docs/api/globalconfig.html私は上記を実装しますが、スクリプトは次の順序で.hmtmlヘッダーで参照する必要があります。

<script src="jquery.js"></script> 
<script src="custom-scripting.js"></script> 
<script src="jquery-mobile.js"></script> 
+0

あなたの助けをありがとうPereとWes :)上記の解決策を考え出す前に、私は結果なしであなたの提案を試しました。私がjQuery Mobileを使用していたという重要な情報を含めないようにすることで、あなたは全体の画像を持っていないが、私には間違いがある。再度、感謝します。 –

1

実際はバグのようです。たぶん

redirect("/dashboard?access_token="+access_token); 

代わりの

dashboard(access_token); 
+0

私はあなたが正しいと思う、これはおそらくプレイです!バグ。 私はあなたの提案を試みましたが、http:// localhost:9000/dashboard?access_tokenとkey = 1234の代わりにhttp:// localhost:9000/dashboard?別のものです。 しかし、私は認証からのためにjavascriptを使ってこれを解決しました。認証の後、私はダッシュボードを呼び出しますか?access_token = javascriptのchangepageを通して。これは私が好む方法ではありませんが、今のところ問題を解決します。 –

+0

それは変です。 access_tokenを実際に印刷してみてください。 –

1

Javaコードは罰金だしてみてください。念のために、あなたがルートファイルを変更しようとしました:POST前にGETを移動

# Home page 
GET /     Application.index 
GET  /dashboard  Dashboard.dashboard 
POST /dashboard  Dashboard.authenticate 

(そのセクションのプレイのバグがある場合は、注文事項、これはそれを修正する必要があります)。

もう1つの方法は、POSTルートの名前を変更して、両方のルートが同じ 'path'を持つ場合に問題を解決することです。

# Home page 
GET /     Application.index 
GET  /dashboard   Dashboard.dashboard 
POST /dashboard/auth  Dashboard.authenticate 
関連する問題