强制用户在Symfony 2中登录

时间:2012-11-27 04:14:02

标签: security symfony configuration

每当我尝试删除security.yml中的anonymous: ~配置时,系统最终都会返回错误310:重定向循环。

这是迄今为止的配置:

    firewalls:
    secured_area:
        pattern: ^/
        #anonymous: ~
        form_login:
            check_path: /login_check
            login_path: /login
        logout:
            path: /logout

1 个答案:

答案 0 :(得分:4)

试试这个:

firewalls:
    secured_area:
        pattern: ^/
        #anonymous: ~
        form_login:
            check_path: /login_check
            login_path: /login
        logout:
            path: /logout
    login_firewall:
        pattern:    ^/login$
        anonymous:  ~

请参阅文档http://symfony.com/doc/current/book/security.html#book-security-common-pitfalls

确保登录页面不安全

此外,请确保登录页面不需要查看任何角色。例如,以下配置 - 需要所有URL(包括/ login URL)的ROLE_ADMIN角色,将导致重定向循环:

access_control:
    - { path: ^/, roles: ROLE_ADMIN }

删除/ login URL上的访问控制可解决问题:

access_control:
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, roles: ROLE_ADMIN }

此外,如果防火墙不允许匿名用户,则需要创建一个允许匿名用户登录页面的特殊防火墙:

firewalls:
    login_firewall:
        pattern:    ^/login$
        anonymous:  ~
    secured_area:
        pattern:    ^/
        form_login: ~