1

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) {
  }
}
4

2 に答える 2

2

現在のユーザーを取得するには、次を使用する必要があります。

$this->get('security.context')->getToken()->getUser();

現在のユーザーが特定の役割を持っているかどうかを確認するには:

 $this->get('security.context')->isGranted('ROLE_USER')
于 2013-05-28T15:42:21.650 に答える