Extension de AuthorizeAtsortingbute Override AuthorizeCore ou OnAuthorization

En utilisant ASP.NET MVC, je crée un atsortingbut Authorize personnalisé pour prendre en charge une logique d’autorisation personnalisée. J’ai examiné 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 de nombreux exemples se substituer à l’un ou à l’autre. Y a-t-il une différence?

L’indice est dans les types de retour:

AuthorizeCore renvoie un booléen – il s’agit d’ un code décisionnel . Cela devrait se limiter à examiner l’identité de l’utilisateur et à tester les rôles dans lesquels il se trouve, etc. etc. En gros, il devrait répondre à la question:

Do I want this user to proceed?

Il ne devrait effectuer aucune activité supplémentaire “sur le côté”.

OnAuthorize renvoie un void – c’est là que vous placez toute fonctionnalité qui doit se produire à ce stade. Par exemple, écrire dans un journal, stocker des données dans une session, etc., etc.

Vous devez mettre tout code qui doit s’exécuter, que l’utilisateur soit autorisé pour la première fois ou qu’il utilise une autorisation mise en cache dans AuthorizeCore .

Si vous examinez le code source, vous pouvez voir que AuthorizeCore est appelé à la fois par OnAuthorize et OnCacheAuthorization . Cela permet la mise en cache de l’autorisation, tout en autorisant certaines actions et en prenant les décisions concernant l’autorisation.

Si vous avez besoin de quelque chose de AuthorizationContext, vous pouvez créer une propriété pour contenir les informations, puis y accéder dans la méthode AuthorizeCore.