0

Symfony2 と FOSUserBundle を使用すると、次の実装で期待される動作が得られません。

まず、Continue where I left offChrome のオプションは、「Remember me」などをチェックしたかどうかに関係なく、ユーザー セッションを完全に復元することを知っておいてください。そのため、セッションのすべての情報を含む Cookie を保存します。

私がやろうとしているのは、Continue where I left offChrome でそのオプションを介して保存された Cookie からセッションが作成されないようにすることです。

または、セッションの作成を避けられない場合は、少なくともセッションが完全に透過的な方法で行われることを確認してください。

Symfony2 のドキュメント (具体的には here )でこれを見つけました。

ただし、場合によっては、特定のリソースにアクセスする前に、ユーザーに実際に再認証を強制したい場合があります。たとえば、「remember me」ユーザーに基本的なアカウント情報を表示することを許可し、その情報を変更する前に実際に再認証するように要求することができます。セキュリティ コンポーネントは、これを行う簡単な方法を提供します。明示的に割り当てられたロールに加えて、認証方法に応じて、次のいずれかのロールがユーザーに自動的に割り当てられます。 IS_AUTHENTICATED_ANONYMOUSLY - サイトのファイアウォールで保護された部分にいるが、実際にはログインしていないユーザーに自動的に割り当てられます。これは、匿名アクセスが許可されている場合にのみ可能です。IS_AUTHENTICATED_REMEMBERED - 記憶 Cookie によって認証されたユーザーに自動的に割り当てられます。

したがって、間違っていなければ、オプションの結果として透過的にログインするユーザーにCopntinue where I left offは、IS_AUTHENTICATED_REMEMBERED が必要です。

まあ、現実はそうではないということです。実際には、許可は IS_AUTHENTICATED_FULLY です。

誰かがこれを通過しましたか?

このすべてについて何か考えはありますか?

ありがとう

4

1 に答える 1

1

セッションはサーバー側で処理されます。サーバーのセッションの有効期間の構成によっては、ブラウザーを閉じて、セッションを失うことなく再度開くことができます。Continue where I left offこれはGoogle Chromeのオプションとは関係ありません。

許可はIS_AUTHENTICATED_FULLY、セッションがサーバー上でまだアクティブであるためであり、Google Chrome オプションのためではありません。

簡単な使用例。セッションの有効期間を 5 分間に設定したとします。

私を記憶するオプションなし:

  1. ログインします: サーバー上にセッションが作成されます。
  2. ブラウザを閉じます。
  3. 10 分後に戻ってきます。セッションの有効期限が切れているため、資格情報を提供する必要があります。

記憶オプションを使用すると、次のようになります。

  1. ログインすると、サーバー上でセッションが作成され、ブラウザ上でCookieが作成され、接続したことを知らせます
  2. ブラウザを閉じます。
  3. は 10 分後に戻ってきます。したがって、資格情報を再度提供する必要はありません。

どちらの場合も、最初の 5 分以内に戻ってきた場合は、サーバーがまだブラウザーのセッションを処理しているため、自動的にログインされます。

于 2012-12-29T01:15:09.757 に答える