类别: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网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章