类别:YII / 日期:2019-12-30 / 浏览:200 / 评论:0
yii2应用csrf防备表单反复提交
起首,默许情况下,yii2的csrf考证是经由过程cookie来保留token考证的,要完成防备表单反复提交,得先把这个体式格局改成session。
修正项目设置即可完成 (引荐进修:yii框架)
'components' => [ 'request' => [ 'enableCsrfCookie' => false ] ]
然后,csrf考证经由过程后,在进入下一次get要求之前是不会革新或许消灭session里保留的谁人csrf token的,而考证csrf的处所在控制器的beforeAction要领里,源码 yii\web\Controller 以下
/** * @inheritdoc */ public function beforeAction($action) { if (parent::beforeAction($action)) { if ($this->enableCsrfValidation && Yii::$app->getErrorHandler()->exception === null && !Yii::$app->getRequest()->validateCsrfToken()) { throw new BadRequestHttpException(Yii::t('yii', 'Unable to verify your data submission.')); } return true; } return false; }
改源码固然不好,所以建个新控制器继续该控制器完成beforeAction要领
public function beforeAction($action) { if (parent::beforeAction($action)) { if ($this->enableCsrfValidation) { Yii::$app->getRequest()->getCsrfToken(true); } return true; } return false; }
以上就是yii2怎样防备反复提交表单的细致内容,更多请关注ki4网别的相干文章!
版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。