使用Symfony的Action Security(如果用户未被识别),他将被转发到默认的登录动作,如application settings.yml文件中所定义的。用户成功通过身份验证后,如何将用户转发到最初请求的操作?Symfony Action安全 - 成功验证后如何转发?
1
A
回答
8
在先打到你的登录操作,存储引荐到用户会话:
if(!$this->getUser()->hasParameter('referer'))
{
$this->getUser()->setParameter('referer',$this->getRequest()->getReferer());
}
,然后当登录成功,将用户重定向至存储引用者有:
$this->redirect($this->getUser()->getParameter('referer'));
你有完整的例子在sfGuardPlugin:
1
更简单地说...
$this->getUser()->setReferer($this->getRequest()->getReferer());
像
setReferer($referer)
{
if (!$this->hasAttribute('referer'))
$this->setAttribute('referer', $referer);
}
0
一个相关的问题,而是试图从不同的动作进行着:
如果您有通过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());
}
通过重置在第一块中的闪光灯,它不会被登录尝试之间遗忘,并通过使用闪光灯,从登录其他网页无法干扰您的操作。
相关问题
- 1. Symfony安全验证
- 2. 春季安全 - 成功身份验证后无法访问
- 3. 如何安全发送验证邮件?
- 4. 如何验证IO.copy_stream成功
- 5. satellizer redirectUri不成功后成功验证
- 6. symfony 1.4验证没有在action中触发..class.php
- 7. Symfony安全基本认证
- 8. 成功验证后通过Shibboleth凭证
- 9. 春季3安全验证成功处理程序
- 10. 成功登录后转发
- 11. jQuery验证并成功提交后转到页面
- 12. 成功认证后的自定义响应弹簧安全
- 13. 春季安全认证成功后返回HTTP 403
- 14. Jenkins在成功构建后未触发gerrit验证
- 15. 如何验证meekrodb的安全性?
- 16. 验证码另类,如何安全?
- 17. 如何让CakePHP验证更安全?
- 18. 成功提交后重置aurelia验证
- 19. 表单验证成功后显示Fancybox
- 20. jQuery验证成功
- 21. 如何在全新安装后登录并验证Postgresql?
- 22. 如何验证SQL Server 2008 R2的成功安装
- 23. 的Android如何验证ACRA崩溃日志的成功安装
- 24. 成功验证后进行数据转换
- 25. Symfony 2.1.7 - 在用户验证后更新安全令牌设置特定角色
- 26. 如何仅在jQuery验证插件成功时发送ajax验证?
- 27. 如何验证PayPal支付成功
- 28. 如何验证SCP是否成功?
- 29. Symfony安全 - 跳过警卫
- 30. 成功验证后捕获Facebook发送的访问令牌
我在使用名称为'referer'的属性时遇到问题。用不同的名字解决了这个问题。 – Druckles 2011-07-28 16:38:10