我目前正在尝试按照本指南http://symfony.com/doc/master/cookbook/security/remember_me.html在Symfony2项目中实现记住我的功能。 (我目前在当地开发)
所以我在security.yml中的当前配置是:
form_login:
[...]
remember_me: true
remember_me:
key: secretKey
lifetime: 31536000 # 365 days in seconds
path: /
domain: localhost # Defaults to the current domain from $_SERVER
access_control:
- { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login-check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: [IS_AUTHENTICATED_REMEMBERED, ROLE_ADMIN] }
" REMEMBERME" cookie是在登录时创建的,在我关闭浏览器窗口后它仍然存在。当我再次打开浏览器时,cookie仍然存在,但当我尝试访问/ admin路径时它会被删除,然后我被重定向到登录页面。
真的无法理解......是否有人遇到过这样的问题?
由于
答案 0 :(得分:4)
也许您的access_control
从这里开始:http://symfony.com/doc/current/book/security.html#securing-url-patterns-access-control
You can define as many URL patterns as you need - each is a regular expression. BUT, only one will be matched...
另请阅读:http://symfony.com/doc/current/cookbook/security/access_control.html
基本解决方案
"记住我" FosUserBundle 1.3.5中的函数(使用Symfony 2.6)适用于我。我只想在浏览器关闭后登录我的页面(参见用户名,图片......)。
'IS_AUTHENTICATED_FULLY'
和'IS_AUTHENTICATED_REMEMBERED'
之间存在差异。
在我的树枝上:
{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
...
{% endif %}
在我的security.yml中,我使用了Symfony Cookbook的默认配置(如何添加"记住我"登录功能)。否则它是普通的security.yml形式FossUserBundle Github文档。
# app/config/security.yml
security:
providers:
fos_userbundle:
id: fos_user.user_provider.username
encoders:
FOS\UserBundle\Model\UserInterface: sha512
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
remember_me:
key: "%secret%"
lifetime: 31536000 # 365 days in seconds
path: /
domain: ~ # Defaults to the current domain from $_SERVER
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
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
P.S我必须清除:缓存以使其在IE11中运行