Frage

Ich habe meine Basis-Controller mit ein paar Aktionsfilter eingerichtet. Sie arbeiten gut.

Eines dieser Filter-Sets auf die Anfrage -. Tut Dinge wie eingestellt, um die Kultur auf der Domäne basiert, etc

Ich habe auch eine Handvoll von Aktionen, die Genehmigung erfordern das Autorisieren-Attribut.

Mein Problem ist, dass, wenn ein Benutzer versucht, eine Seite zu verlangen sie, den Zugang nicht berechtigt sind, die Genehmigung Filter Kicks in und leitet sie an einer Seite ihnen zu sagen, dass sie die Seite nicht vie können.

Das Problem ist, dass die Aktion Filter laufen nie so die Kultur und andere Anforderungsdaten nie eingestellt. Dies effektiv bewirkt, dass die Sprache in der Ansicht und anderen Daten falsch sein zu fehlen.

ich weiß, dass die Genehmigungs Filter laufen erste, aber meine Frage ist: Wie kann ich diese so gestalten, dass ich sicherstellen kann, dass bestimmte Methoden werden immer ausgeführt werden, bevor die Ansicht zurückgegeben wird, unabhängig von der Genehmigung

.

Ich hoffe, das macht Sinn.

War es hilfreich?

Lösung

Nach dieser Dokumentation (unter dem Filter Auftragskopf), filtern Authorization immer vor Action-Filter laufen. Dies bedeutet, dass mit Order Eigenschaften Messing wird nicht helfen.

Ich denke, der beste Weg, dies zu handhaben ist Ihr eigenes Berechtigungs Attribut schreiben (von AuthorizeAttribute Subklassen und zwingenden AuthorizeCore) und läuft die Aktion Filter manuell, wenn die Autorisierung fehlschlägt.

Andere Tipps

Unter Reihenfolge der Ausführung für die Aktion Filter MSDN-Artikel auf Aktion Filter

Grundsätzlich können Sie eine Order Eigenschaft auf diesen Kultur Filter liefern, so läuft es vor das Authorization Filter, so etwas wie folgt aus:

[CultureRedirect(Order = 1)]
public class MyBaseController : Controller { }

[Authorize(Order = 2)]
public class RequiresAuth : MyBaseController { }

...

Wenn das fehlschlägt, können Sie Execute eine Aktion ausführen und vor jeder Action wird ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top