55 votes

Étendre AuthorizeAttribute Remplacer AuthorizeCore ou OnAuthorization

J'utilise ASP.NET MVC pour créer un attribut Authorize personnalisé afin de prendre en charge une logique d'autorisation personnalisée. J'ai regardé beaucoup d'exemples et c'est assez simple, mais ma question est de savoir quelle méthode est la meilleure pour remplacer, AuthorizeCore ou OnAuthorization ? J'ai vu beaucoup d'exemples de remplacement de l'une ou l'autre méthode. Y a-t-il une différence ?

78voto

BonyT Points 6465

L'indice est dans les types de retour :

AuthorizeCore renvoie un booléen - c'est prise de décision code. Cela devrait se limiter à examiner l'identité de l'utilisateur et à tester les rôles auxquels il appartient, etc. etc. En gros, cela devrait répondre à la question suivante :

Do I want this user to proceed?

Il ne doit pas effectuer d'activités supplémentaires "à côté".

OnAuthorize retourne void - c'est là que vous mettez tout fonctionnalité qui doit se produire à ce moment-là. Par exemple, écrire dans un journal, stocker certaines données dans une session, etc. etc.

17voto

Erik Funkenbusch Points 53436

Vous devez placer tout code qui doit être exécuté indépendamment du fait que l'utilisateur soit autorisé pour la première fois ou qu'il utilise une autorisation mise en cache dans le fichier AuthorizeCore .

Si vous regardez le code source, vous pouvez voir que AuthorizeCore est appelé par les deux OnAuthorize y OnCacheAuthorization . Cela permet à l'autorisation d'être mise en cache tout en permettant certaines actions et de prendre les décisions réelles concernant l'autorisation.

Si vous avez besoin d'un élément de l'AuthorizationContext, vous pouvez créer une propriété pour contenir l'information et y accéder dans la méthode AuthorizeCore.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X