我在Symfony2中使用FOSUserBundle进行身份验证。一切正常,除了“记住我”。我的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
有人知道如何解决这个问题。
答案 0 :(得分:10)
这对我不起作用,因为我使用了2个用户提供商:FOSUserBundle和FosFacebook。
实际上已经设置了cookie,但是在TokenBasedRememberMeServices中,processAutoLoginCookie我看到使用了错误的提供程序。
要修复它,我必须在remember_me部分的security.yml中指定我想要使用的提供程序。
firewalls:
main:
...
remember_me:
secret: "%secret%"
lifetime: 2592000
path: /
domain: ~
user_provider: fos_userbundle
也许这也有助于其他人。
更新:我已经修改了响应,因为在较新版本的Symfony中," key"在remember_me下现在被称为"秘密"。
答案 1 :(得分:5)
正如“阿德里安C”所说,但有一点变化对我有用。
而不是“钥匙”我使用“秘密”
<i class="fa fa-hand-spock-o"></i>
答案 2 :(得分:2)
Remember me
(例如domain
)上设置Cookie,则 localhost
功能可能无效。如果是这种情况,请将您的域设置为有效的域名(例如,dev.site.com
)。还要确保已清除缓存。
答案 3 :(得分:0)
除了安全性remenber_me配置之外,它还适用于会话生命周期:
framework:
session:
default_locale: %locale%
auto_start: true
lifetime: 3600