Désactiver la validation CSRF pour les actions individuelles dans Yii2
Est-il un moyen de désactiver la validation CSRF pour certaines actions du contrôleur de le garder activé pour les autres?
Dans mon cas, j'ai plusieurs configurable classes d'Action, qui sont destinés à être injectés dans les contrôleurs. Je ne peux pas passer validation csrf token dans la requête AJAX parce que la chose que je suis en train de travailler avec lui est extérieur (fait pas par moi) WYSIWYG plugin dans l'interface. Oui, je peux toujours désactiver csrf de la validation de l'ensemble du contrôleur à l'aide de ces actions, mais il peut être précaire.
Vous devez vous connecter pour publier un commentaire.
Pour le contrôleur spécifique /actions que vous pouvez désactiver les CSRF de la validation de la sorte:
Ou à l'intérieur d'un contrôleur:
Prendre un coup d'oeil à $enableCsrfValidation propriété de yii\web\Controller.
Mise à jour:
Voici quelques spécifications.
Si vous souhaitez désactiver la validation CSRF pour chaque action(s) vous devez le faire dans
beforeAction
gestionnaire d'événement car jeton CSRF est vérifiée avant que l'action s'exécute (enbeforeAction
deyii\web\Controller
).Officiel docs:
beforeAction
. Merci pour la remarque, mise à jour de la réponse.$action
ne fonctionne pas pour moi$action
devrait déjà contenir l'id d'action, essayez devar_dump
à l'intérieur de la méthode, quel est le résultat?$action['id']
, mais quand j'ai essayé de l'utiliser, il m'a donné un peu d'erreur en disant que je ne pouvais pas utiliser$action
comme un tableau.Mettre cela à l'intérieur de votre contrôleur, il suffit de remplacer l'indice avec toute action que vous souhaitez désactiver
csrf
sur.Yii::$app->controller->
lorsque vous êtes dans le contrôleur de l'utilisation$this
pour la désactivation du régulateur de courant de l'action..j'ai essayé et cela a fonctionné .
Aller pour le contrôleur spécifique et d'écrire ce à le haut.
Pour moi, c'est ce qui a fonctionné