2017-07-19 08:01:32 2635次浏览 2条回答 0 悬赏 15 金钱

GridView控件中['class' => 'yii\grid\ActionColumn'],自动生成的删除功能,点击删除后提示 Bad Request

(#400) Unable to verify your data submission.这个删除本身是URL传值啊,难道也要用csrf验证?
解决方法一:我把ActionColumn.php基类中initDefaultButtons()的'data-method' => 'post'注释了,把对应的

控制器中behaviors()函数中的'delete' => ['POST']注释了,就可以了,奇怪的是其它项目没有这么做,删除仍然正


解决方法一:对应的控制器中设置 public $enableCsrfValidation = false;可能会影响其它功能

上面两种解决方法自己感觉都不好,担心会影响其它功能,所以想问问有没有其它解决方法,本身是URL传值,怎么也会

用到CSRF验证呢。

补充于 2017-07-19 08:02

只有15分,全给了,谢谢!

补充于 2017-07-19 14:08

什么意思?怎么看删除的post数据中有没有csrf?

补充于 2017-07-20 11:08

谢谢akunbear 的回答,关闭CSRF验证是一种堵的措施,有没有疏的措施,既能完成删除又能完成完全验证?

最佳答案

  • 阿坤 发布于 2017-07-20 09:30 举报

    你可以在controller的beforeAction中,判断到具体的action的id,然后关闭验证

    public function beforeAction($action)
    {
       if ($action->id == '你的action的id') {
          $this->enableCsrfValidation = false;
       }
       
       return parent::beforeAction($action);
    }
    
  • 回答于 2017-07-19 09:02 举报

    删除的post数据中没有csrf?

    1 条回复
    回复于 2017-07-19 17:45 回复

    使用工具查看post数据,f12开发者工具。基础的调试技能还是要先学习一下

您需要登录后才可以回答。登录 | 立即注册
langxingcs
试用期

langxingcs

注册时间:2017-06-15
最后登录:2017-07-31
在线时长:2小时21分
  • 粉丝0
  • 金钱15
  • 威望0
  • 积分35

热门问题