假设我的路由 /booking/(.*) 受 security.yml 中的防火墙配置保护,它需要“ ROLE_USER ", when user tries to access any route that is preceded by " /booking/ ”该应用程序将用户重定向到登录页面进行身份验证 .
所以我的问题是,在用户提供他的凭据并获得身份验证之后,Symfony 2如何能够将用户重定向回用户请求的页面/路由或者Symfony 2存储在哪里 route 它将它存储在某个会话中别的地方 .
Can we access it and how?
4 回答
我也有这个问题 . 我使用了security.yml并在使用的注册操作中:
请享用 .
Symfony使用HTTP Referer header将用户重定向回他们来自的页面..即引用者
您可以使用security.yml中的安全配置
use_referer: true
进行设置,details here您可以使用以下命令从控制器访问referer标头:
Note Headers 拼写错误,其引用(一个r)
Carrie Kendall的解决方案有效,谢谢!
这是Symfony中的完整实现:
services.yml:
在Project \ BaseBundle \ Service \ loginHandler中:
这是可能的,您可以在会话中访问引用链接(如果
use_referer
设置为true
,则使用该链接) .例如,如果您的
form_login
(在防火墙配置中)有一个success_handler
服务,它根据某些条件(通常是角色)重定向用户,但是如果设置了用户,则您希望将用户重定向到引荐来源链接,您可以访问引荐来源链接像这样:使用标头获取引用者(即
$request->headers->get('referer')
)在这种情况下不起作用,因为它将始终返回登录链接 .感谢Roman Marintsenko和Ryan Weaver为此blog