我有一个symfony网站,可以在2.0.9版本上运行并开发。我尝试升级到最新版本(2.4.2),但现在每次我尝试访问登录页面时都会出现重定向循环。这是日志所说的内容:
[2014-03-16 12:39:10] security.INFO: Authentication exception occurred; redirecting to authentication entry point (A Token was not found in the SecurityContext.) [] []
这是我的security.yml
security:
encoders:
Starski\FrontBundle\Entity\User:
algorithm: sha1
iterations: 1
encode-as-base64: false
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
main:
entity: { class: Starski\FrontBundle\Entity\User, property: mail }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/demo/secured/login$
security: false
index:
pattern: ^/
form_login:
login_path: /login
check_path: /auth
default_target_path: /index
failure_handler: starski.security.handler
success_handler: starski.security.handler
access_control:
- { path: ^/demo/secured/hello/admin/, roles: ROLE_ADMIN }
有人知道为什么会这样吗?
答案 0 :(得分:1)
您可以查看以下内容:
您的login_path 在您的防火墙后面。这永远不会像这样认证。
将其添加到您的访问控制中:
- { path: ^(.*)/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
login_path
,check_path
和default_target_path
应该是正确定义的路由名称,而不是绝对网址。
您有一个从未使用的提供程序('main')。
尝试将provider: main
添加到表单登录身份验证方法。
要阅读的内容:
http://symfony.com/doc/current/book/security.html#book-security-common-pitfalls
http://symfony.com/doc/current/reference/configuration/security.html#the-login-form-and-process