Php Symfony2:登录后重定向到上一页
我想这样做: 用户尝试访问私人页面(他需要登录)。当他试图访问时,他无法访问,因为以前他必须写他的凭证。他写下密码并登录系统。我希望用户将自动重定向到他试图访问的页面 我放了保安Php Symfony2:登录后重定向到上一页,php,session,symfony,authentication,login,Php,Session,Symfony,Authentication,Login,我想这样做: 用户尝试访问私人页面(他需要登录)。当他试图访问时,他无法访问,因为以前他必须写他的凭证。他写下密码并登录系统。我希望用户将自动重定向到他试图访问的页面 我放了保安 use_referer: true 在我的第一个控制器中,我将: $this->getRequest()->headers->get('referer'); 我总是得到登录名的地址(…/login.php)。与此相反,我需要获取例如(…/downloads/test.txt) 我还尝试了: $re
use_referer: true
在我的第一个控制器中,我将:
$this->getRequest()->headers->get('referer');
我总是得到登录名的地址(…/login.php)。与此相反,我需要获取例如(…/downloads/test.txt)
我还尝试了:
$request->getSession()->get('_security.account.target_path');
但我得到空值
我该怎么做
提前谢谢
---使用security.yml编辑---
默认情况下,Symfony2将执行此操作。如果用户直接进入登录页面(例如通过书签),则只能指定要转到的url
查看如何使用此行为设置“防火墙”:谢谢,但由于我的此行为不起作用,我在原始帖子中添加了防火墙配置。谢谢。check_path和login_path需要路由,在routes.yml(或其他地方)中定义,而不是实际文件。好的,我将check_path和login_path与routing.yml中定义的路由器放在一起(check_path:login_check和login_path:login)但是系统没有将我重定向到上一页。你可以添加
security.yml
中的访问控制部分吗?是的,我已经添加到了我原来的帖子中。谢谢。如果您希望用户在成功验证后重定向到防火墙后面的url,您可能根本不需要use\u referer
(正如@colburton所指出的)。尝试删除它。$request->getSession()->get(“\u security.account.target\u path”)
将返回null
,因为您的防火墙名称为“前端”。应该是:$request->getSession()->get(“\u security.fronted.target\u path”)代码>谢谢,但我删除了use\u referer的行为,它是一样的。使用$request->getSession()->get(“'u security.fronted.target'u path”);我也总是空的(
firewalls:
frontend:
pattern: ^/*
anonymous: ~
simple-form:
authenticator: my_authenticator
check_path: login_check
login_path: login
use_referer: true
failure_path: login_error
logout:
path: logout
target: /
success_handler: my_authenticator
remember_me:
key: mykey
lifetime: 31536000
switch_user: { role: ROLE_ADMIN, parameter: _login_as }
access_control:
- { path: ^/web/login.php, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
- { path: ^/web/login_error.php, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
- { path: ^/*, roles: [ROLE_USUARIO, ROLE_RESELLER, ROLE_ADMIN], requires_channel: https }