【问题标题】:bad roles redirect to 403 instead of fail坏角色重定向到 403 而不是失败
【发布时间】:2012-09-11 18:50:43
【问题描述】:

我使用 Symfony2 系统进行用户身份验证,当一个角色不是 ROLE_ADMIN 的用户尝试登录时,他可以登录,但他在 403 页面上被阻止。这是我的安全配置:

security:
encoders:
    Me\UserBundle\Entity\User:
        algorithm: sha512
        encode-as-base64: true
        iterations: 10
providers:
    main:
        entity:
            class: Me\UserBundle\Entity\User
            property: username
firewalls:
    secured_area:
        pattern: ^/
        anonymous: ~
        form_login:
            login_path: /login
            check_path: /login_check
            default_target_path: /admin/user/
        logout:
            path: /logout
            target: /login
access_control:
    - { path: ^/admin/, roles: [ROLE_ADMIN] }
    - { path: ^/account, roles: [IS_AUTHENTICATED_FULLY] }

我希望,如果用户尝试使用 ROLE_ADMIN 以外的其他角色登录,他会返回登录表单并显示身份验证错误,并且不会在任何地方登录时出现 403 错误。 我该怎么办? 谢谢

【问题讨论】:

    标签: symfony handler user-roles


    【解决方案1】:

    您无法仅通过配置获得此行为。由于抛出 AccessDeniedException 是正常行为(用户已通过身份验证,因此需要将她/他重定向到身份验证),因此您必须处理 AccessDenied。

    请参阅 this answer,其中说明了如何创建和使用 AccessDeniedHandler

    【讨论】:

      猜你喜欢
      • 2019-06-24
      • 2021-03-14
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 2011-11-18
      • 2019-07-11
      • 2011-05-15
      • 1970-01-01
      相关资源
      最近更新 更多