2016-11-10 3 views
0

Wenn die HttpGet-Aktionsmethode einen Autorisierungsfilter hat, benötigt die entsprechende HttpPost auch eine? Die Aktionsmethode HttpPost ist durch ValidateAntiForgeryToken und Datenbindung geschützt. Jeder Benutzer muss über ldap authentifiziert werden.asp.net mvc5 benutzerdefinierte Autorisierung auf HttpPost

[HttpGet] 
[CustomAuthorization("Admin", "User")] 
public ViewResult MyMethod(){} 


[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult MyMethod([Bind(Include = "Vars")] Model model){} 
+0

Was ist die Frage - ob es notwendig ist, den Auth-Filter auch für Post-Aktionen anzuwenden? Ja. – Nikkster

+0

Ja, benötigt der HttpPost diesen Auth-Filter – MinchMeister

Antwort

0

Das Filterattribut, das Sie für eine Methode verwenden. Es hat keine Auswirkungen auf andere Methoden. Sie können auch ein Attribut auf die Klasse setzen, dann wird es alle Methoden beeinflussen (zumindest gewöhnliche Authorize Attribut funktioniert auf diese Weise, so bin ich mir fast sicher, dass es der Fall für diese auch ist).

ValidateAntiForgeryToken tut nichts mit der Authentifizierung. Es überprüft nur, dass ein Token aus HTML dem Token aus dem Cookie entspricht. Sie können mehr darüber lesen, aber im Grunde ist es gegen CSRF-Angriffe zu schützen, nicht um Benutzer zu authentifizieren.

0

Ja, wenn Benutzer in diesem Fall berechtigt sein müssen, Postanforderungen an MyMethod zu stellen, muss auch der Autorisierungsfilter vorhanden sein.

Wenn Sie beispielsweise zu den URL/{Controller}/MyMethod/MVC-Routen zu Ihrer MyMethod-Aktion gehen, die standardmäßig mit dem HttpGet-Attribut deklariert wurde, und alle Auth-Filter usw. anwendet. Dasselbe gilt für eine POST-Anforderung. In diesem Fall wird der Aufruf an die andere mit HttpPost deligierte Aktion weitergeleitet und alle Filter ausgeführt.

Verwandte Themen