微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Symfony2记住我不能使用fos用户捆绑包

我正在尝试按照本指南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’之间存在差异.

在我的树枝上:

{% 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中运行

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐