L'action que vous avez demandée n'est pas autorisée
J'ai fait un module nommé Galerie qui fonctionne très bien sur mon localhost avec la version 2.0.3, mais lors de l'utilisation de la version 2.1.0 sur un site distant, je ne peux pas soumettre un formulaire et j'obtiens l'erreur:
L'action que vous avez demandée n'est pas autorisée.
Pourquoi est-ce?
source d'informationauteur Faruk Omar
Vous devez vous connecter pour publier un commentaire.
C'est un Codeigniter erreur liée à la protection CSRF. Vous pouvez l'annuler en
cms/config/config.php
Je suis d'accord avec @Jhourlad Estrella sur la façon de résoudre les problèmes au lieu de désactiver une fonctionnalité de sécurité, cependant je pense que le vrai problème est avec le champ caché qui détient le jeton.
Au lieu d'utiliser de l'HTML simple pour créer un élément de formulaire, le
form_open()
etform_close()
des fonctions d'assistance. La raison en est parce que lorsque vous utilisez la fonction d'assistance il insère automatiquement le jeton csrf comme un champ caché dans le formulaire.Vous pouvez le faire manuellement en ajoutant le jeton comme un champ caché dans le formulaire
Cette façon de faire vous permettra de rester protégé contre les attaques CSRF et résoudre le problème que vous rencontrez.
Espère que cela aide quelqu'un d'autre comme cela a été me rend fou la première fois, essayant de se faire.
Sur les questions de programmation, vous n'allez pas résoudre des problèmes, à vous de les corriger. Ce que je veux dire, c'est que cette fonctionnalité n'est pas ici si ce n'est inutilisable: 'coz c'est et ça marche pour moi. Vous avez juste un problème sur la mise en œuvre.
Ma réponse: Supprimer les tirets, les périodes et tous les autres caractères non alphanumériques à partir des valeurs des entrées suivantes sur application/config/config.php comme on le voit ci-dessous:
BTW, des tirets parfois travail, mais je vous suggère d'utiliser des mots à chaque fois que possible lors de la dénomination config valeurs. Non, sauf si vous avez le temps et les compétences pour l'étude de Codeigniter base de fichiers liés à ce que jamais vous travaillez sur juste pour s'assurer qu'il est sécuritaire de le faire.
De toute façon, j'espère que cela aide quelqu'un là, même si ma réponse est plus d'un an de retard.
J'ai un formulaire qui a été construit à l'extérieur de l'IC (Joomla), mais que je voulais traiter avec CI. Ma solution était de désactiver de manière sélective les csrf pour certains référents. J'ai ajouté cette config, directement après la configuration par défaut des options pour csrf:
Cela désactive la protection csrf pour des Url spécifiques dans le $csrf_off tableau, mais laisse intact pour toutes les autres demandes.
C'est une vieille question, mais ce problème ne m'a coûté beaucoup de temps que je voulais partager quel était le problème dans mon cas. Il peut aider quelqu'un.
J'utilise Codeigniter 3.0.6 et CommunityAuth 3 ensemble avec elle, et j'avais ce message d'erreur après un login.
Il a été source de confusion car le problème serait parfois se produire et n'aurait pas d'autres moments.
Mon 'base_url' en CI config.php a été défini comme 'www.mysite.com'
Lorsque vous naviguez sur le site avec 'mysite.com' (avis de " www " n'est pas dans l'adresse) et que vous ne la soumission d'un formulaire qui utilise CI s 'base_url' établissement, comme CommunityAuth de connexion de l'est, puis CSRF vérification échoue et que vous obtenez 'L'action que vous avez demandée n'est pas autorisée." erreur.
Utiliser le codeigniter forme de l'ouvre comme ceci:
voir codeigniter formulaire de documentation pour plus d'.
C'est probablement un cas rare, mais je n'ai pas vu mon problème depuis mon serveur a beaucoup de différents noms de domaine qui sont très similaires. Le problème était que j'étais à l'atterrissage sur un domaine qui était complètement faux, mais depuis "L'action que vous avez demandée n'est pas autorisée." erreur prend la priorité sur "Erreur" 404 not Found" je ne pouvais pas le voir. Mon problème est que je n'ai pas changé mon base_url le domaine approprié. Donc, si aucune des solutions ci-dessus fonctionne pour vous, vous pouvez vérifier vos paramètres pour $config['base_url'] application/config.
Pour moi, le problème était que j'étais le chargement de la vue dans l'index, que j'ai modifié comme suit et il a travaillé:
Cette erreur est renvoyée par la fonction csrf_show_error() dans
system/core/Security.php
lorsque le jeton CSRF dans $_COOKIE ne correspond pas à votre $_POST['csrf_token_name'].À l'intérieur de
config.php
j'ai eu à assurer que$config['cookie_domain']
appariés$config['base_url']
sans le protocole (c'est à direhttp(s)://
).Sinon, le cookie n'a pas été adopté ce qui signifiait que le match ne pouvait pas être fait.
Im en Utilisant Codeigniter 3 même problème avec
Basé sur Isaac Pak point, j'ai changé mon base_url à ce que je usally tapé dans la barre d'adresse. c'est comme ça...
au lieu de mettre
j'écris de cette façon..
depuis mon
base_url()
est juste..le correctif fonctionne pour mon site...
J'ai trouvé à l'aide de la forme des fonctions d'assistance
Exemple
En utilisant les fonctions d'assistance, comme ci-dessus devrait arrêter le CSRF message d'erreur indiquant.
Si je n'utilise pas d'écho form_input() si je place tout à fait normal d'entrée déclenche le CSRF erreur lors de la recharger.
Donc je recommande l'utilisation de toute forme de fonctions d'aide maintenant.