2009-07-31 2 views

Antwort

1

Das auf welche Art von "Override" ab, die Sie wollen. Sie können das Attribut, das sich in der Klasse befindet, nicht entfernen, aber Sie können das Attribut der Methode erneut hinzufügen, um die Einschränkungen zu verringern.

Update als Reaktion auf Kommentare. Erstens ist es etwas gefährlich, ein eigenes AuthorizeAttribute zu erstellen. AuthorizeAttribute enthält Code, der mit den Caching-Attributen interagiert, um sicherzustellen, dass der Cache geschützte Inhalte nicht an einen nicht autorisierten Benutzer liefern kann. Sie sollten mindestens das vorhandene AuthorizeAttribute unterschreiben, anstatt etwas völlig Neues zu erstellen. Im Allgemeinen ist es jedoch eine bessere Idee, das vorhandene AuthorizeAttribute zu verwenden und Ihre Autorisierung zu spezialisieren, indem Sie einen neuen/einen vorhandenen ASP.NET-Mitgliedschaftsanbieter suchen.

Ich glaube nicht, dass es ein gutes Design wäre, einen Filter auf eine Aktion zu haben, die einen Filter auf einem Controller "außer Kraft setzt". Sie können jedoch das Design des Filters auf dem Controller so ändern, dass für eine Aktion mit einem bestimmten Namen keine Autorisierung erforderlich ist. Sie könnten beispielsweise die AuthorizeAttribute.AuthorizeCore-Methode überschreiben, um auf die gleiche Weise wie die vorhandene Methode für den Benutzernamen und die Rollen nach einem Aktionsnamen zu testen. Beachten Sie die Kommentare in dieser Methode zur Threadsicherheit sehr sorgfältig.

+0

Es tut uns nicht klarer sein. Ich verwende meine eigene Implementierung des Authorize-Attributs, und ich möchte die Autorisierung für alle Methoden auf einem Controller außer einem erfordern. Ist das möglich? – James

Verwandte Themen