Est-il possible de remplacer un attribut qui a été appliqué au niveau du contrôleur sur une méthode spécifique?

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

Question

Si j'ai appliqué un attribut d'autorisation au niveau du contrôleur, est-il possible de le remplacer sur l'une des méthodes de ce contrôleur?

Merci

James

Était-ce utile?

La solution

Cela dépend du type de "substitution". tu veux. Vous ne pouvez pas supprimer l'attribut qui se trouve sur la classe, mais vous pouvez l'ajouter à la méthode afin de rendre les choses plus restrictives.

Mise à jour en réponse à des commentaires. Tout d'abord, créer votre propre AuthorizeAttribute est quelque peu dangereux. AuthorizeAttribute contient du code qui interagit avec les attributs de mise en cache afin de garantir que le cache ne peut pas fournir de contenu protégé à un utilisateur non autorisé. Au minimum, vous devez sous-type AuthorizeAttribute existant au lieu de créer quelque chose de complètement nouveau. Toutefois, il est généralement préférable d’utiliser l’autorisation AuthorizeAttribute existante et de spécialiser votre autorisation en créant un nouveau / trouvant un fournisseur d’appartenance ASP.NET existant.

Je ne pense pas que ce serait bien de disposer d'un filtre sur une action qui "annule". un filtre sur un contrôleur. Toutefois, vous pouvez modifier la conception du filtre sur le contrôleur pour ne pas requérir d'autorisation pour une action portant un nom donné. Vous pouvez, par exemple, remplacer la méthode AuthorizeAttribute.AuthorizeCore pour tester un nom d'action de la même manière que la méthode existante teste le nom d'utilisateur et les rôles. Prenez bien note des commentaires de cette méthode concernant la sécurité des threads.

Autres conseils

Je ne suis pas sûr que ce soit exactement la même question, mais cela peut aider ...

Comment créer ActionFilter sur La méthode d'action a priorité sur le même ActionFilter sur le contrôleur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top