【问题标题】:security in symfony 3symfony 3 中的安全性
【发布时间】:2017-05-04 20:39:54
【问题描述】:

我正在使用 Symfony 3.2 和 fos 用户捆绑包 2.0 我使用经典设置:“FOSUserBundle 入门”

security:
always_authenticate_before_granting: true
encoders:
    FOS\UserBundle\Model\UserInterface: bcrypt

role_hierarchy:
    ROLE_ADMIN:       ROLE_CLIENT

providers:
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_token_generator: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4
        logout: true
        anonymous: ~

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 }
    - { path: ^/client, role: ROLE_CLIENT }

它可以工作,但有些奇怪: 当我注销并导航到公共页面时,它会显示为我始终登录 我需要在浏览器中手动重新加载页面以使注销生效。 (我在模板中使用 {% if is_granted('ROLE_ADMIN') %} ) 是我的安全配置有问题还是缓存有问题? 一些帮助将不胜感激 谢谢 文森特

【问题讨论】:

    标签: symfony fosuserbundle


    【解决方案1】:

    尝试将 ROLE_USER 添加到您的角色层次结构中,如下所示:

    role_hierarchy:
        ROLE_CLIENT:    ROLE_USER
        ROLE_ADMIN:     ROLE_CLIENT
    

    如文档中所述:“确保每个用户至少有一个角色,否则您的用户看起来好像他们没有经过身份验证。一个常见的约定是给每个用户 ROLE_USER。” http://symfony.com/doc/current/security.html#roles

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多