Ich möchte AntiForgeryTokens
für jede HttpPost-Aktion mit einem ActionFilter verwenden, der sich in einem Controller namens ControllerBase
befindet, von dem jeder andere Controller erbt.
Ich möchte dies tun, indem ich einen ActionFilter erstelle, der von ValidateAntiForgeryToken
erbt, der ein Argument benötigt, das angibt, auf welche HTTP-Verben er sich anwenden soll. Ich möchte dann diesen Filter auf ControllerBase
anwenden, um sicherzustellen, dass das AntiForgeryToken
für JEDEN POST-Vorgang auf der gesamten Site überprüft wird.
Ich habe mit diese Lösung , aber
AuthorizationContext Constructor (ControllerContext)
ist ein veralteter Konstruktor und ich bin mir nicht sicher, wie ich den Code mit der empfohlenen AuthorizationContext(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
wiederherstellen soll.
Es scheint nicht, das AntiForgeryToken standardmäßig zu verwenden, da ich nach jeder Postaktion den folgenden Fehler erhalte: A required anti-forgery token was not supplied or was invalid
.
Wie soll ich meinen ActionFilter so umschreiben, dass er die aktuellen, nicht überholten Standards erfüllt und ein Anti-Fälschungs-Token für jedes [HttpPost]
Verb richtig verwendet?
Muss ich selbst in jeder Form einen Anti-Fälschungs-Token enthalten (ich denke, dass ich das tue)? (Im Gegensatz dazu, dass es automatisch generiert wird - lach nicht, ich bin neugierig) Update: Wie in den Kommentaren darauf hingewiesen; Ja, das muss mit jedem Formular gemacht werden.
Hier ist der Code von meiner ControllerBase als Referenz:
%Vor% Sie müssen keine AuthorizationContext
instanziieren oder die Methode OnAuthorization
aufrufen, einfach:
Ich habe den folgenden Ansatz verwendet:
%Vor%Dies ermöglicht es uns, sie von Fall zu Fall mit dem SkipCRSRFCheck-Attribut zu deaktivieren und sie dann als globalen Filter im Application_Start zu registrieren:
GlobalFilters.Filters.Add (neues AntiForgeryTokenFilter ());
Ich möchte %code% für jede HttpPost-Aktion mit einem ActionFilter verwenden, der sich in einem Controller namens %code% befindet, von dem jeder andere Controller erbt.
Ich möchte dies tun, indem ich einen ActionFilter erstelle, der von %code% erbt, der ein Argument benötigt, das angibt, auf welche HTTP-Verben er sich anwenden soll. Ich möchte dann diesen Filter auf %code% anwenden, um sicherzustellen, dass das %code% für JEDEN POST-Vorgang auf der gesamten Site überprüft wird.
Ich habe mit diese Lösung , aber
%code% ist ein veralteter Konstruktor und ich bin mir nicht sicher, wie ich den Code mit der empfohlenen %code% wiederherstellen soll.
Es scheint nicht, das AntiForgeryToken standardmäßig zu verwenden, da ich nach jeder Postaktion den folgenden Fehler erhalte: %code% .
Wie soll ich meinen ActionFilter so umschreiben, dass er die aktuellen, nicht überholten Standards erfüllt und ein Anti-Fälschungs-Token für jedes %code% Verb richtig verwendet?
Muss ich selbst in jeder Form einen Anti-Fälschungs-Token enthalten (ich denke, dass ich das tue)? (Im Gegensatz dazu, dass es automatisch generiert wird - lach nicht, ich bin neugierig) Update: Wie in den Kommentaren darauf hingewiesen; Ja, das muss mit jedem Formular gemacht werden.
Hier ist der Code von meiner ControllerBase als Referenz:
%Vor%Sie müssen keine %code% instanziieren oder die Methode %code% aufrufen, einfach:
%Vor%Tags und Links asp.net-mvc asp.net-mvc-3 action-filter antiforgerytoken httpverbs