安全配置:access_denied_url无效

时间:2014-11-27 14:26:11

标签: security symfony symfony-2.6

我的申请分为三个部分:

  • 管理:^/backend ip
  • 保护
  • 安全区域:^/member登录
  • 保护
  • 公共路线:^/

access_denied_url外,一切正常。我尝试指定路由名称和普通路径。

当我从配置的IP以外的IP访问/backend时,我收到以下消息:

  

访问此资源需要完全身份验证。   500内部服务器错误 - InsufficientAuthenticationException   1个链接的异常:AccessDeniedException»

在开发环境中,这个异常根本没有导致致命错误但是access_denied_url选项不应该以某种方式重定向到给定的URL?

这是我的security.yml:

security:
    firewalls:
        backend:
            pattern: ^/backend
            anonymous: ~
            access_denied_url: /403

        main:
            pattern: ^/
            anonymous: ~
            form_login:
                success_handler: my_auth_handler
                failure_handler: my_auth_handler
                use_referer: true
                check_path: login_check
            logout:
                path: /logout
                success_handler: my_auth_handler

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    access_control:
        - { path: ^/backend,    roles: IS_AUTHENTICATED_ANONYMOUSLY, ips: [127.0.0.1] }
        - { path: ^/backend,    roles: ROLE_NO_ACCESS }
        - { path: ^/userlounge, roles: IS_AUTHENTICATED_FULLY }
        - { path: ^/,           roles: IS_AUTHENTICATED_ANONYMOUSLY }

    providers:
        frontend:
            id: my_user_provider

    encoders:
        My\FrontEndBundle\User\MyUser:
            algorithm:        md5
            encode_as_base64: false
            iterations:       1

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

我认为您应该尝试在access_denied_url节点上指定不在特定防火墙(security)上的选项backend,因为我认为可能是其他防火墙抛出了AccessDenied异常

来源:http://symfony.com/doc/current/reference/configuration/security.html

或者您可以创建AcccessDeniedListener,请参阅此页面以获取教程:http://www.insanevisions.com/articles/view/symfony-2-access-denied-listener