2

私はPlayFrameworkプロジェクトに取り組んでおり、SecureSocialユーザーアクションにプラグインを使用しています。

私の問題は、Play Frameworkのドキュメントによると、ブラウザタブを閉じて新しいタブを開いたときに、セッションが閉じられてリセットされているはずだったということです。

しかし、タブを閉じて再度開くと、セッションIDが同じであり、ユーザーがログインページを再度開かずに直接ログインしていることがわかります(ユーザー情報はプレイセッションで引き続き利用できるため)

セッションを開く前後の出力は次のとおりです。

session = {sid=86, ___ID=80519f26-ccf9-4e6f-9f9a-0f2a3bbc7b20, securesocial.network=userpass, ___AT=4241355a05e419dabc6e16612275b3d932133707, securesocial.user=test}

そして、数秒後にブラウザタブを閉じて再度開きます...

session = {___ID=80519f26-ccf9-4e6f-9f9a-0f2a3bbc7b20, sid=86, securesocial.network=userpass, ___AT=4241355a05e419dabc6e16612275b3d932133707, securesocial.user=test}

すべてが同じです。時々それはランダムに変化します

ちなみに、私はapplication.conf他のどこにもセッション設定を持っていません。すべてがデフォルト設定のままです。

4

2 に答える 2

1

これが最新のブラウザの新しい「機能」であることに気付きました。すべてのタブとブラウザー自体を完全に閉じない限り (osx では、右クリックして閉じる)、ブラウザーはセッションを閉じないため、ユーザーはブラウザーを完全に閉じるまで再ログインする必要はありません..

つまり、「タブ」を閉じるだけでセッションが期限切れになることはありませんが、「ブラウザ」を完全に閉じる必要があります。

于 2012-09-19T12:49:23.047 に答える
1

SocialSecure は Cookie を使用します - ユーザーが以前に特定のプロバイダーに対して認証されているかどうかを確認します。Cookie を削除すると、機能を最初からテストできるようになります。

SecureSocial.java 内 (controllers.securesocial 内) - checkAccess 内の getUserId が呼び出される場所 (ユーザーとプロバイダーの Cookie 値をチェックする場所) を確認できるはずです。

それが役に立てば幸い

于 2012-07-12T15:52:59.827 に答える