我在CakePHP 2中制作的表单有问题。
表格提交工作正常,但随后我改变了它,现在我也提交了其他一些东西。我也做了这样,以便用户可以选择他要提交的“服务”的数量。
现在,只有在精确的1“服务”时,表单才会提交。 我认为te问题存在于“形式篡改”保护中。 由于我希望用户“篡改”表单,如何禁用此保护?
我的beforeFilter看起来像这样:
parent::beforeFilter();
$this->Auth->allow('register_new');
// Security component
if (isset($this->Security) &&
$this->RequestHandler->isAjax() &&
($this->action == 'statistics'))
{
// $this->Security->validatePost = false;
$this->Security->csrfCheck = false;
}
if (isset($this->Security) &&
$this->RequestHandler->isAjax() &&
($this->action == 'markPaid'))
{
$this->Security->validatePost = false;
$this->Security->csrfCheck = false;
}
有问题的“行动”(没有获得任何数据的行为)是“register_new”。
答案 0 :(得分:3)
代码
$this->Auth->allow('register_new');
无需身份验证即可访问register_new
,但不会禁用表单篡改保护。
if($this->request->params['action'] == 'register_new')
{
$this->Security->validatePost = false;
}
或者,您也可以仅使用
在某些字段上禁用POST验证$this->Security->unlockedFields = array('field_1', ...);
具有保持对其他人的验证的优势。