yii2 でフォームの繰り返し送信を防ぐ方法

(*-*)浩
リリース: 2019-12-30 10:22:06
オリジナル
2793 人が閲覧しました

yii2 でフォームの繰り返し送信を防ぐ方法

#yii2 はフォームの繰り返し送信を防ぐために csrf を使用します

まず、デフォルトでは yii2 の csrf 検証が行われます。トークン検証は Cookie によって保存されます。フォームが繰り返し送信されないようにするには、まずこのメソッドをセッションに変更する必要があります。

これは、プロジェクト構成を変更することで実現できます (推奨学習: yii フレームワーク)

'components' => [
	'request' => [
		'enableCsrfCookie' => false
	]
]
ログイン後にコピー

その後、 csrf 検証に合格し、セッションに保存された csrf トークンは次の get リクエストを入力する前に更新またはクリアされず、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 でフォームの繰り返し送信を防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!