我在symfony2项目上使用FOSUserBundle
。用户可以登录和注销,一切工作正常。
"后端路由"如下:
/backend
重定向到:
/backend/login
第一个问题:
用户直接呼叫登录页面:
/backend/login
他被重定向到起始页,而不是成功登录后的/backend
。
第二个问题:
用户被重定向到检查凭据的URL:
/backend/login_check
一些浏览器保存这个URL,所以它进入自动完成,用户不认识到他正在调用backend/login_check
,因为它重定向到login
。然而,问题是,在成功登录后,symfony2试图将用户重定向到路由check_login
,该路由失败,并且大多数时间导致再次显示登录窗口。
security.yml
firewalls:
login_firewall:
pattern: ^/backend/login$
anonymous: ~
backend:
pattern: ^/backend
form_login:
provider: fos_userbundle
login_path: /backend/login
check_path: /backend/login_check
#use_forward: true
routing.yml
login:
pattern: /backend/login
defaults: { _controller: VendorNameBundle:User:login }
login_check:
pattern: /backend/login_check
我怎样才能解决这两个问题?
首先,删除login_firewall
。你不需要它。相反,使用下面所描述的access_control
然后,您可以为backend
防火墙使用default_target_path
选项:
backend:
pattern: ^/backend
form_login:
provider: fos_userbundle
login_path: /backend/login
check_path: /backend/login_check
default_target_path: /backend
点击这里查看更多