2017-05-23 18 views
1

전자 메일에 사용자 이름으로 FOSUserBundle을 사용하고 있습니다.Symfony FOSUserBundle Remeber me does not work

'remember_me 기능을 사용하려고 시도하지만 작동하지 않습니다. 내가 이것을 읽었습니다 Symfony2: "Remember me" tries to authenticate by username instad of email

그것은 꽤 오래된 기사이고 데이터베이스의 사용자 이름 필드는 전자 메일과 동일한 값으로 설정되어 있으므로 왜 작동하지 않는지 이해할 수 없습니다.

누군가가 도와 드릴까요 ... 구글 크롬 경감에서 rememberme 쿠키 설정으로 확인?

IT는 역할 구성 문제입니다, 내 security.yaml

providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username_email 

    firewalls: 
     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       csrf_token_generator: security.csrf.token_manager 
      logout:  true 
      anonymous: true 
      remember_me: 
       secret: '%secret%' 
       lifetime: 604800 # 1 week in seconds 
       path: /
     # disables authentication for assets and the profiler, adapt it according to your needs 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

    access_control: 
     - { path: ^/$, role: IS_AUTHENTICATED_FULLY } 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/account/*, role: IS_AUTHENTICATED_FULLY } 
     - { path: ^/admin/*, role: ROLE_ADMIN } 

답변

1

OK입니다. documentation에 따르면

: IS_AUTHENTICATED_ANONYMOUSLY

  • : 모든 사용자 로그인이이가 로그온 한 경우에도 : 모든 사용자 (심지어 익명의 사람이)이

  • IS_AUTHENTICATED_REMEMBERED이 "내 쿠키 기억"때문입니다. 당신이 중동을 기억 기능을 사용하지 않더라도, 당신은 사용자가 로그인되어 있는지 확인하려면이 옵션을 사용할 수 있습니다 IS_AUTHENTICATED_FULLY

  • 을 :.이 IS_AUTHENTICATED_REMEMBERED 유사하지만 강하다. "remember me cookie"로 인해
    에 로그인 한 사용자는
    IS_AUTHENTICATED_REMEMBERED이지만 IS_AUTHENTICATED_FULLY는 없습니다.

그래서, 내 security.yml에서, 브라우저를 닫은 후 경로에 "^/$ '와'^/계정/*"에 접근을 시도하기 때문에 IS_AUTHENTICATED_FULLY 요청의 수 없었습니다.

나는 이제 내가에서 rememberme 쿠키와 함께 "^/$"경로에 액세스 할 수 있습니다이

access_control: 
     - { path: ^/$, roles: IS_AUTHENTICATED_REMEMBERED } 
     - { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/account/*, roles: IS_AUTHENTICATED_FULLY } 
     - { path: ^/admin/*, roles: [IS_AUTHENTICATED_FULLY, ROLE_ADMIN] } 

로 변경하지만이 "^/계정/"및 "^/관리/했습니다 "민감한 데이터로 인해 더 제한적입니다 (정확히 내가 원했던 것입니다).