Ist es möglich, ein Attribut außer Kraft zu setzen, die auf einem speziellen Verfahren auf Controller-Ebene angewendet wurde?

StackOverflow https://stackoverflow.com/questions/1213036

Frage

Wenn ich ein Berechtigungs Attribut auf Controller-Ebene angewendet haben, ist es möglich, auf diesem Controller dies auf eine der Methoden außer Kraft zu setzen?

Danke

James

War es hilfreich?

Lösung

Das hängt davon ab, welche Art von „überschreiben“ Sie wollen. Sie können nicht das Attribut entfernen, die von der Klasse ist, aber Sie können das Attribut auf das Verfahren wieder hinzufügen, um Dinge restriktiver zu machen.

Update in Reaktion auf die Kommentare. Erstens, Ihre eigenen AuthorizeAttribute machen, ist etwas gefährlich. AuthorizeAttribute enthält Code, der in Wechselwirkung mit dem Caching, um Attribute zu gewährleisten, dass der Cache nicht geschützten Inhalt an einen nicht autorisierten Benutzer dienen kann. Zumindest sollten Sie die vorhandenen AuthorizeAttribute Subtyp, anstatt etwas völlig Neues zu schaffen. Im Allgemeinen jedoch ist es eine bessere Idee, die bestehend AuthorizeAttribute zu nutzen und Ihre Genehmigung spezialisiert, indem ein neuen erstellen / ein bestehenden ASP.NET-Mitgliedschaftsanbieter zu finden.

Ich glaube nicht, dass gutes Design sein würde, auf eine Aktion eines Filters zu haben, die „überschreibt“ einen Filter auf einem Controller. Sie können jedoch das Design des Filters auf dem Controller nicht ändern Genehmigung erfordern auf eine Aktion eines bestimmten Namens. Sie könnten zum Beispiel überschreiben die AuthorizeAttribute.AuthorizeCore Verfahren für einen Aktionsnamen in der gleichen Art und Weise für die Benutzername der bestehenden Verfahren Tests zu testen und die Rollen. Nehmen Sie sehr aufmerksam die Kommentare in diesem Verfahren in Bezug auf Thread-Sicherheit.

Andere Tipps

Ich bin mir nicht sicher, ob dies ist genau die gleiche Frage, aber es kann helfen ...

Wie Action auf machen Aktionsmethode Vorrang vor der gleichen Action auf Controller nehmen

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