gpt4 book ai didi

php - Symfony2 记住我不适用于 fos 用户包

转载 作者:可可西里 更新时间:2023-10-31 23:04:36 24 4
gpt4 key购买 nike

我目前正在按照本指南 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 路径时它被删除,然后我被重定向到登录页面。

我真的无法理解...有人遇到过这样的问题吗?

谢谢

最佳答案

也许在您的access_control中有另一个匹配的规则

来自这里:http://symfony.com/doc/current/book/security.html#securing-url-patterns-access-control

您可以根据需要定义任意数量的 URL 模式 - 每个都是一个正则表达式。但是,只有一个会被匹配...

另请阅读:http://symfony.com/doc/current/cookbook/security/access_control.html

基本解决方案

FosUserBundle 1.3.5(带有 Symfony 2.6)中的“记住我”功能对我有用。我只想在浏览器关闭后登录我的页面(查看用户名、图片...)。

'IS_AUTHENTICATED_FULLY''IS_AUTHENTICATED_REMEMBERED' 是有区别的。

在我的 Twig 上:

{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
...
{% endif %}

在我的 security.yml 中,我使用了 Symfony Cookbook 中的默认配置(如何添加“记住我”登录功能)。否则它是 FossUserBundle Github 文档中的普通 security.yml。

# 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 中工作

关于php - Symfony2 记住我不适用于 fos 用户包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27721782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com