Cakephp 2.x和Csrf令牌

Cakephp 2.x和Csrf令牌,php,json,cakephp,Php,Json,Cakephp,我使用激活了安全组件的cakephp 2.x,问题是我禁用了json请求的csrf验证,如下所示: $this->Security->unlockedActions = array('do_json'); 是否可以从beforefilter中删除unlockedActions代码,并将csrf验证集成到json请求以及其他非json操作中 提前感谢。除非您的请求包含使用表单帮助程序生成的表单中的数据,否则您很可能必须禁用后期数据验证: $this->Security->

我使用激活了安全组件的cakephp 2.x,问题是我禁用了json请求的csrf验证,如下所示:

$this->Security->unlockedActions = array('do_json');
是否可以从beforefilter中删除unlockedActions代码,并将csrf验证集成到json请求以及其他非json操作中


提前感谢。

除非您的请求包含使用表单帮助程序生成的表单中的数据,否则您很可能必须禁用后期数据验证:

$this->Security->validatePost = false;
然后,您必须在请求POST数据中包含CSRF令牌。生成的令牌可以在请求参数中找到,如
\u token.key

$this->request->param('_Token.key')
// or
$this->request->params['_Token']['key']
并且需要作为
\u令牌提交。密钥也需要提交,即

{
    "_Token": {
        "key": "keyValue"
    }
}
另见


但是如果我们已经手动检查,那么如何在成功验证后删除此令牌?因为我们删除了成功使用的代币。@BhavinThummar对不起,我不明白你在问什么。@ndm对不起,我的英语很差。表示如何使用validatecsrf函数,以便在调用此函数后令牌过期。如果你不明白我的意思,我可以给你一个演示question@BhavinThummar如果您正在寻找一次性使用令牌,这是安全组件的默认行为,除非您通过components
csrfUseOnce
选项显式更改它,请参阅。如果这不是您想要的,那么您可能希望打开一个新问题,在这里您可以详细解释您的问题,并包含代码示例。