2016-08-23 4 views
-1

私は、認証されたユーザと匿名ユーザの両方を許可するルートを持っています。 (ユーザーが認証されている場合、応答は異なります)。 ログインしているユーザーの場合、ユーザーのトークンを取得できません。これを処理する方法はありますか? ありがとう!SymfonyのIS_AUTHENTICATED_ANONYMOUSLYパスの後ろで認証されたユーザを扱います

は、ここに私のsecurity.ymlファイルです:。

$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY'); 

このリターン:あなたは、ユーザーがログインしているかどうかをチェックするためにsecurity.authorization_checkerサービスを使用することができます

firewalls: 
    login: 
     pattern: ^/api/login 
     stateless: true 
     anonymous: true 
     form_login: 
      check_path:    /api/login_check 
      success_handler:   lexik_jwt_authentication.handler.authentication_success 
      failure_handler:   lexik_jwt_authentication.handler.authentication_failure 
      require_previous_session: false 
      username_parameter:  _email 
      password_parameter:  _password 

    episodes: 
     pattern: ^/api/episodes 
     stateless: true 
     anonymous: true 

    api: 
     pattern: ^/api 
     stateless: true 
     lexik_jwt: ~ 

access_control: 
    - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/api/episodes, roles: [IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY] } 
    - { path: ^/api,   roles: IS_AUTHENTICATED_FULLY } 
+0

ルートが設定されたファイアウォールのいずれかの後ろにあることを確認してください。そうしないと、認証されたユーザーにアクセスできなくなります。 – Yoshi

+0

よろしくお願いします。ありがとうございました。私は私のsecurity.ymlファイルを置くために投稿を編集しました。だから、ルートは私のファイアウォールの後ろにある。間違ったことがありますか? – Alfredo

+0

一見すると、すべてのファイアウォールに同じ[* context *](https://symfony.com/doc/current/reference/configuration/security.html#firewall-context)を使用して、それが助けば。 – Yoshi

答えて

0

あなたのコントローラでは、あなたがこのようなことを行うことができますブール値。

詳細については、Symfony Secutiry Component Documentationを参照してください。

具体的には、IS_AUTHENTICATED_FULLYIS_AUTHENTICATED_REMEMBEREDの違いを見て、アプリケーションで何が起こっているのかを理解してください。

関連する問題