【发布时间】:2015-04-22 06:29:00
【问题描述】:
我对 cakephp 中的黑洞请求非常关注,但我没有找到解决问题的有效解决方案。
在我的应用程序中,我在多个地方使用了登录表单,因此我创建了一个可重用的元素。喜欢:
echo $this->Form->create('User', array('class' => 'form-horizontal', 'role' => 'form', 'url' => array('controller' => 'users', 'action' => 'login')));
echo $this->Form->input('email', array('label' => false, 'class' => 'form-control'));
echo $this->Form->input('password', array('label' => false, 'class' => 'form-control'));
echo $this->Form->end();
(注意:控制器的 URL 和表单中的操作)
如果我在foo.com/users/login 中单击表单的发送按钮,我将成功重定向到用户/查看或返回用户/登录失败。之后,我按下浏览器页面返回按钮返回表单并再次单击发送按钮一切正常,并再次检查登录。但是如果我在例如foo.com/pages/home 中做同样的事情,我会在第二个继续时收到一个请求黑洞异常(第一个工作正常)。
如果我停用安全组件一切正常,但这不是我想要的。
如何防止这种情况发生?
我也认识到安全组件默认不可用?这是真的吗?
感谢您的帮助。
【问题讨论】:
-
安全组件阻止用户重新点击表单,我猜你是在测试中重新点击表单。
-
但是我该如何处理呢?它不是用户友好的。如果用户点击页面后退按钮,我可以自动刷新页面以便生成新令牌吗?推荐的处理方法是什么?
-
如果用户点击返回按钮,您可以重新验证页面
-
你能给我看一个例子或 cakephp 书的链接吗?
-
$this->response->disableCache();做到了!太感谢了。就我而言,我必须将其放入 PagesController 的显示操作中。发表你的答案,我会接受的。
标签: php security cakephp cakephp-2.0