Symfony的操作安全性 - 如何验证成功后转发?
题
使用的Symfony的操作安全性,如果用户还没有被确定为应用settings.yml文件中定义的,他将被转发到默认的登录操作。如何将用户转发到最初请求操作的用户身份验证成功后?
解决方案
在先打到你的登录操作,存储引荐到用户会话:
if(!$this->getUser()->hasParameter('referer'))
{
$this->getUser()->setParameter('referer',$this->getRequest()->getReferer());
}
和然后当登录成功,重定向用户到所存储的referer用:
$this->redirect($this->getUser()->getParameter('referer'));
您有sfGuardPlugin完整例如:
其他提示
更简单地说...
$this->getUser()->setReferer($this->getRequest()->getReferer());
像
setReferer($referer)
{
if (!$this->hasAttribute('referer'))
$this->setAttribute('referer', $referer);
}
一个相关的问题,而是试图从不同的动作进行正向:
如果您有通过sfGuard保护的作用,这是试图重定向到引荐,你会在登录后得到一个重定向循环。这是因为登录sfGuard的页面西港岛线成为引用。一个参数或属性可如果储存在登录动作同上,意味着行动可能会被重定向到一个不正确的页面,如果在已经签署的多个请求被保存在该解决方案是使用将被遗忘的闪光。
:这可以用在sfGuardAuthActions的executeSignin方法将下面的代码来实现if ($this->getUser()->hasFlash('referer'))
{
$this->getUser()->setFlash('referer', $this->getUser()->getFlash('referer'));
}
else
{
$this->getUser()->setFlash('referer', $this->getRequest()->getReferer());
}
通过重置在第一块中的闪光灯,它不会被登录尝试之间遗忘,并通过使用闪光灯,从其他网页登入不能与您的操作干扰。
不隶属于 StackOverflow