2011-08-22 67 views
1

这是我的情况。我听说Security组件的requireAuth()函数在页面重新加载后为每个表单生成一个新的键。但我已经通过使用下面的代码使安全组件在CakePHP中工作

function beforeFilter() 
{ 
... 
$this->Security->requireAuth(); 
} 

但还是没有在我的申请表格生成密钥试图在每一个控制器在我的应用程序。我甚至提交了表格,但仍然保持不变。我Security.levelcore.php

+0

'requireAuth'与表单无关。您是否使用FormHelper创建表单?另外,你确定你在寻找正确的东西吗? – deceze

+0

@deceze我使用表单助手的形式。我可以看到关键的价值。但每种形式都一样。而我正在寻找ri8的东西。 – shahalpk

+0

您是否在讨论''? – deceze

回答

1

编辑答案

看的表单助手的源代码,只要令牌是一样的,如果$this->params['_Token']设置设定为high,它使用$this->params['_Token']['key']作为隐藏字段值。另一方面,隐藏字段id是随机生成的不是令牌密钥。

当使用$this->Form->end()方法时,如果设置了$this->params['_Token'],则字段将通过名为secure()的方法运行。这本质上是序列化表单字段,并通过Security::hash()运行它们,创建序列化字段的SHA1散列。如果表单已被篡改,则此散列将与原始标记不同,因此Cake知道表单已被篡改。

$this->Security->requireAuth()与您的表单无关,它将操作设置为需要SSL。

+0

我没有得到SSL部分。你能否精心使用requireAuth() – shahalpk