这是我的情况。我听说一旦页面重新加载,Security
组件的 requireAuth()
函数会为每个表单生成一个新 key 。但是我已经使用下面的代码在我的应用程序中的每个 Controller 中进行了尝试
function beforeFilter()
{
...
$this->Security->requireAuth();
}
但我的应用程序中仍然没有任何表单生成 key 。我什至提交了表格,但 key 仍然保持不变。我的 Security.level
在 core.php
high
最佳答案
编辑后的答案
查看 FormHelper 的源代码,就 token 相同而言,如果设置了 $this->params['_Token']
,它使用 $this->params['_Token']['key']
作为隐藏字段的值。另一方面,隐藏字段 id
是随机生成的,而不是 token key 。
当使用$this->Form->end()
方法时,如果设置了$this->params['_Token']
,则运行字段通过名为 secure()
的方法。这实质上是序列化表单字段并通过 Security::hash()
运行它们,后者创建序列化字段的 SHA1 哈希。如果表单被篡改,这个哈希将不同于原始 token ,因此 Cake 知道表单已被篡改。
$this->Security->requireAuth()
与您的表单无关,它将操作设置为需要 SSL。
关于php - 使安全组件在 CakePHP 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7142955/