Symfony2 - 保护一切

时间:2013-04-18 18:03:49

标签: authentication symfony login configuration redirect

我编写了一个应用程序,其中我需要保护所有内容(登录页面除外)并重定向到登录。我尝试了来自http://symfony.com/doc/master/book/security.html的解决方案(避免常见的陷阱 - >确保登录页面不安全)但它对我没有帮助 - 我的请求仍然被重定向到无限循环。

这是我的security.yml文件的firewalls部分:

firewalls:
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false

    login:
        pattern:  ^/login$
        security: false

    secured_area:
        pattern:    .*
        anonymous: ~
        form_login:
            login_path:  login
            check_path:  login_validation
            success_handler: authentication_handler
        remember_me:
            key:      "%secret%"
            lifetime: 31536000 # 365 days in seconds
            path:     /
            domain:   ~ # Defaults to the current domain from $_SERVER

提前感谢您的帮助。

编辑:我当然希望只有登录和完全通过身份验证的用户才能访问。

2 个答案:

答案 0 :(得分:0)

我相信您也需要允许匿名访问您的检查路径。

答案 1 :(得分:0)

进入security.yml

firewalls:
  main:
   pattern: .*
   form_login:
     provider: fos_userbundle
     csrf_provider: form.csrf_provider
     default_target_path: /index #everything you want to redirect after login to
     always_use_default_target_path: true
   logout:       true
   anonymous:    true
access_control:
  - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
  - { path: ^/.*, role: ROLE_USER } #is just a role example, change it

这样就可以了解

您错过了第二部分(access_control one),它将触发此防火墙捕获的firewall事件(在这种情况下为main