最近正在用yii2写新项目。遇到了一些问题和大家分享一下。在我做登录操作是出现400错误。当时很纳闷,明明路径都是对的。怎么会出现这个问题呢!于是乎goole了一下。问题是解决了。但是感觉不详细。于是乎想整理一下。
前提是我没有用ActiveForm表单组件,废话少说,进入正题。
csrf 概念
我怕说的不好,但是我看到一篇文章讲的不错。链接如下:
我个人的理解就是一个服务器token,与cookie session 进行对比,保证数据的合法性和防御CSRF攻击。
如果你不用ActiveForm表单组件,在添加 更新 删除等操作就会出现400错误。我们怎么解决的。
一. 局部关不csrf验证
public function init(){
$this->enableCsrfValidation = false;
}
二. 表单中加入csrff
<input type="hidden" name="_csrf-backend" id='_csrf' value="<?= Yii::$app->request->csrfToken ?>">
这个是重点, 不能这样 name="_csrf" ,否则无效。必须加入后缀。后缀也是规则的。
-
查看name配置 可以看到是_csrf-backend
-
编辑表单
Array ( [_csrf-app] => kQvzekYEWUj2tn2JbOdbzwoy8vrkgNZcJS4EXEWaPTXYRppPCm4yL7zxPMApiGKtfXqEz575-xZ2eW1tMvtFeQ== [login_name] => weixi [login_password] => 123456 )
有什么不足之处,请指正。谢谢。