问题描述
我正在使用fosuserbundle进行Symfony2中的身份验证.除了"记住我",一切都很好.我的security.yml看起来像这样:
security: providers: fos_userbundle: id: fos_user.user_manager encoders: 'FOS\UserBundle\Model\UserInterface': sha512 firewalls: main: pattern: ^/ form_login: provider: fos_userbundle logout: true anonymous: true remember_me: key: aSecretKey lifetime: 3600 path: / domain: ~ access_control: - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/admin, role: ROLE_ADMIN } role_hierarchy: ROLE_ADMIN: ROLE_USER ROLE_SUPER_ADMIN: ROLE_ADMIN
有人知道如何解决这个问题吗?
推荐答案
这对我不起作用,因为我使用了2个用户提供商:fosuserbundle和fosfacebook.
实际上是设置了cookie,但是在Tokenbasedremembermeservices中,ProcessAutologincookie我看到正在使用错误的提供商.
要修复它,我必须在security.yml中指定我要使用的提供商.
.firewalls: main: ... remember_me: secret: "%secret%" lifetime: 2592000 path: / domain: ~ user_provider: fos_userbundle
也许这也对别人也有帮助.
update :我已经修改了响应,因为在symfony的较新版本中,nement_me下的"键"现在称为"秘密".
其他推荐答案
作为" Adrian C"说,但对我有用的改变.
而不是"键"我使用"秘密"
firewalls: main: ... remember_me: secret: "%secret%" lifetime: 2592000 path: / domain: ~ user_provider: fos_userbundle
其他推荐答案
Remember me如果浏览器无法在domain上设置cookie(例如localhost),则功能可能无法正常工作.如果是一种情况,则将您的域设置为有效域名(例如,dev.site.com).还要确保您已清除缓存.
问题描述
I'm using a FOSUserBundle for authentication in Symfony2. Everything works fine except "remember me". My security.yml looks like this:
security: providers: fos_userbundle: id: fos_user.user_manager encoders: 'FOS\UserBundle\Model\UserInterface': sha512 firewalls: main: pattern: ^/ form_login: provider: fos_userbundle logout: true anonymous: true remember_me: key: aSecretKey lifetime: 3600 path: / domain: ~ access_control: - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/admin, role: ROLE_ADMIN } role_hierarchy: ROLE_ADMIN: ROLE_USER ROLE_SUPER_ADMIN: ROLE_ADMIN
Does anybody know how to solve this.
推荐答案
This was not working for me neither because i used 2 user providers: FOSUserBundle and FosFacebook.
The cookie was actually being set, but in TokenBasedRememberMeServices, processAutoLoginCookie i saw that the wrong provider was being used.
To fix it i had to specify in security.yml in remember_me section the provider i wanted to use.
firewalls: main: ... remember_me: secret: "%secret%" lifetime: 2592000 path: / domain: ~ user_provider: fos_userbundle
Maybe this helps somebody else too.
Update: I've modified the response since in newer versions of Symfony, the "key" under remember_me is now called "secret".
其他推荐答案
As "Adrian C" said, but with a little change which worked for me.
instead "key" i used "secret"
firewalls: main: ... remember_me: secret: "%secret%" lifetime: 2592000 path: / domain: ~ user_provider: fos_userbundle
其他推荐答案
Remember me feature may not work if browser can't set cookies on your domain (localhost, for example). If this is a case, then setup your domain as a valid domain name (eg, dev.site.com). Also make sure you have cleared cache.