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 ?
Réponses
Trop de publicités?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.
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.