Comment obtenir AntiForgeryToken valeur sans caché entrée
@Html.AntiForgeryToken()
rend caché entrée
<input name="__RequestVerificationToken" type="hidden" value="GuiNIwhIJZjINHhuS_8FenaFDXIiaE" />
Comment puis-je obtenir une valeur symbolique, seulement?
Sans laide de code comme ceci:
public static IHtmlString AntiForgeryTokenValue(this HtmlHelper htmlHelper) {
var field = htmlHelper.AntiForgeryToken().ToHtmlString();
var beginIndex = field.IndexOf("value=\"") + 7;
var endIndex = field.IndexOf("\"", beginIndex);
return new HtmlString(field.Substring(beginIndex, endIndex - beginIndex));
}
Vous devez vous connecter pour publier un commentaire.
L'anti-CSRF capacités de la MVC qui dépend en fait de deux des jetons: l'un est une forme cachée de l'élément, et l'autre est un cookie. De sorte que le Html.AntiForgeryToken() helper n'est pas juste de retour d'un fragment de code HTML. Il a également un effet secondaire de réglage de ce cookie. Notez que la valeur du cookie et la valeur ne sont pas égaux, car ils codent chacune des différentes pièces de l'information.
Si vous utilisez le AntiForgery.GetTokens de l'API, cette méthode retourne le brut des jetons au lieu de générer un fragment de code HTML. Les paramètres de cette méthode sont:
Si vous utiliser cette API pour générer des cookies et des balises de formulaire manuellement, vous devez appeler le correspondant de surcharge de AntiForgery.Valider pour valider les jetons.
Name
etValue
de généré des anti contrefaçon forme de jeton dansHtmlHelper
est nécessaire pour être utilisé en Javascript comme framework ExtJs. Je ne peux pas tout simplement écrire le code HTML de l'élément, au lieu de cela j'ai besoin d'étendre ExtJs composant et de traiter avec le côté client du modèle ou de l'utilisation de l'existant Hiddenfield qui ne nécessitent que le nom et la valeur au lieu de la totalité de l'élément d'entrée...AntiForgery.GetTokens
: besoin de jouer avec cookie;AntiForgery.Validate
: Déjà en interne appelé par[ValidateAntiForgeryToken]
attribut... je endup avec l'aide de l'OP HtmlHelper extension pour obtenir le nom et une valeur.Je me rends compte que cette question est ancienne, mais basé sur ce que j'ai lu ici, je suis venu avec une assez simple solution qui semble fonctionner pour moi. Je l'utilise sur un AngularJS SPA qui utilise partielle modèles, dont une partie seulement impliquer les POST des présentations.
J'ai mis ce code en haut de la vue:
et puis où j'ai besoin du formulaire antiforgery jeton (par exemple, dans une requête ajax ou angularjs POST) je viens de citer '@formToken " dans les en-têtes:
Notez que, comme dans cet exemple, je m'attends à des données JSON retour de ma méthode d'action, j'ai également eu à mettre en œuvre anti-contrefaçon de validation basée sur les en-têtes, pas de champs de formulaire. Il y a un joli post à ce sujet à http://johan.driessen.se/posts/Updated-Anti-XSRF-Validation-for-ASP.NET-MVC-4-RC.. Voici la mise en œuvre:
et voici comment il est utilisé: