symfony2 でログイン ページを実装しようとしています。そのために、独自のカスタム ユーザー プロバイダーを使用しています。
問題は、ユーザーが資格情報を入力すると、認識されないことです。つまり、下部のデバッグ バーに「認証されていません」と表示されます。$request->getUser()
null を返します。しかし、奇妙なことに、ユーザーはログインが必要なページにアクセスすることが引き続き許可されます。
間違ったパスワードを入力すると警告が表示されるため、問題は認証にあるとは思いませんが、正しいパスワードを入力すると最初のページにリダイレクトされます (ただし、「あなたは違います」と表示されます)。認証されました。」)
問題をどこで探すべきか知っていますか?
このペーストビンとこのペーストビンにsecurity.yml
ファイルを添付しました。カスタム ユーザー プロバイダーのコードは次のとおりです。
そして、これは User クラスの定義です。routing.yml
編集: これが私の var_dump ですget('security.context')->getToken()
。面白いことに、それauthenticated
は本当ですが、getUser()
まだ null であり、デバッグ バーには認証されていないと表示されます。
object(Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken)#46 (6) {
["credentials":"Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken":private]=>
NULL
["providerKey":"Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken":private]=>
string(11) "system_area"
["user":"Symfony\Component\Security\Core\Authentication\Token\AbstractToken":private]=>
NULL
["roles":"Symfony\Component\Security\Core\Authentication\Token\AbstractToken":private]=>
array(2) {
[0]=>
object(Symfony\Component\Security\Core\Role\Role)#45 (1) {
["role":"Symfony\Component\Security\Core\Role\Role":private]=>
string(10) "ROLE_ADMIN"
}
[1]=>
object(Symfony\Component\Security\Core\Role\Role)#44 (1) {
["role":"Symfony\Component\Security\Core\Role\Role":private]=>
string(9) "ROLE_USER"
}
}
["authenticated":"Symfony\Component\Security\Core\Authentication\Token\AbstractToken":private]=>
bool(true)
["attributes":"Symfony\Component\Security\Core\Authentication\Token\AbstractToken":private]=>
array(0) {
}
}