Je veux empêcher les utilisateurs de soumettre des formulaires plusieurs fois dans .NET MVC. J'ai essayé plusieurs méthodes en utilisant Javascript, mais j'ai eu des difficultés à le faire fonctionner dans tous les navigateurs. Alors, comment puis-je empêcher cela dans mon contrôleur ? Existe-t-il un moyen de détecter les soumissions multiples ?
Réponses
Trop de publicités?Vous pourriez inclure une valeur cachée (aléatoire ou compteur) dans le message du formulaire, un contrôleur pourrait suivre ces valeurs dans une liste "ouverte" ou quelque chose de similaire ; chaque fois que votre contrôleur distribue un formulaire, il incorpore une valeur, qu'il suit, ce qui permet de l'utiliser dans un message.
Utilisez le modèle de conception Post/Redirect/Get.
PS : Il me semble que la réponse de Jim Yarbro pourrait avoir un défaut fondamental en ce sens que le __RequestVerificationToken
stocké dans le HttpContext.Current.Session["LastProcessedToken"]
sera remplacé lorsqu'un deuxième formulaire sera soumis (à partir d'une autre fenêtre de navigateur, par exemple). À ce stade, il est possible de soumettre à nouveau le premier formulaire sans qu'il soit reconnu comme une soumission en double. Pour que le modèle proposé fonctionne, ne faudrait-il pas qu'un historique de __RequestVerificationToken
être nécessaire ? Cela ne semble pas faisable.
0 votes
Duplicata possible de Dépannage des problèmes de jeton anti-falsification
0 votes
La plupart des réponses ci-dessous concernent l'utilisation de l'identifiant de formulaire. Voir ceci pour définir l'identifiant du formulaire : stackoverflow.com/q/2854616/3885927