警告'IS_AUTHENTICATED_FULLY'
:ユーザーが "Remember me" 機能を使用してログインしている場合、単独でチェックすると false が返されます。
Symfony 2 のドキュメントによると、3 つの可能性があります。
IS_AUTHENTICATED_ANONYMOUSLY - サイトのファイアウォールで保護された部分にいるが、実際にはログインしていないユーザーに自動的に割り当てられます。これは、匿名アクセスが許可されている場合にのみ可能です。
IS_AUTHENTICATED_REMEMBERED - 記憶 Cookie によって認証されたユーザーに自動的に割り当てられます。
IS_AUTHENTICATED_FULLY - 現在のセッション中にログインの詳細を提供したユーザーに自動的に割り当てられます。
これらの役割は、次の 3 つのレベルの認証を表します。
あなたにIS_AUTHENTICATED_REMEMBERED
役割があるなら、あなたにもIS_AUTHENTICATED_ANONYMOUSLY
役割があります。ロールを持っている場合
IS_AUTHENTICATED_FULLY
は、他の 2 つのロールも持っています。つまり、これらの役割は、認証の「強度」が高まる 3 つのレベルを表しています。
「Remember Me」機能を使用したシステムのユーザーが、'IS_AUTHENTICATED_FULLY'
.
答えは、完全に認証されていない場合は再ログインを要求するか、記憶されている役割を確認することです。
$securityContext = $this->container->get('security.authorization_checker');
if ($securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
// authenticated REMEMBERED, FULLY will imply REMEMBERED (NON anonymous)
}
うまくいけば、これで誰かが私と同じ間違いを犯すのを防ぐことができます. 誰かが Symfony 2 にログインしているかどうかを確認する方法を調べるときに、この投稿を参考にしました。
ソース: http://symfony.com/doc/2.3/cookbook/security/remember_me.html#forcing-the-user-to-re-authenticate-before-accessing-certain-resources