2012-11-27 109 views
2

每當我嘗試刪除security.yml中的anonymous: ~配置時,系統都會返回錯誤310:重定向循環。在Symfony 2中強制用戶登錄

這是配置至今:

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

回答

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(包括/登錄URL)的ROLE_ADMIN作用,會引起重定向循環:

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

卸下上的/登錄URL的訪問控制解決了這個問題:

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

另外,如果您的防火牆不允許匿名用戶,你需要創建一個特殊的防火牆允許匿名用戶登錄頁面:

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

感謝我莫名其妙MISSE d那一節,這個問題現在有道理,非常感謝! – ChaoticLoki