Custom MVC AuthorizeAttribute for ASP.NET API Web

j'essaie d'implémenter un attribut d'autorisation personnalisé sur mes contrôleurs D'API Web, mais je suis tombé sur un comportement inattendu.

     <Authorize(Users:="myUser")>
     Public Function GetTodoItems() As IQueryable(Of TodoItem)

le code ci-dessus fonctionne très bien: il permettra " myUser " pour récupérer les articles, mais personne d'autre n'est autorisé l'accès. Cependant, lorsque j'essaie la même approche avec mon autorisation personnalisée, la totalité de la vérification est ignorée, et tout utilisateur peut accéder à la ressource. Ni le AuthorizeCore ni le OnAuthorization les méthodes dépassées dans ma classe dérivée sont appelées.

     <MyAuth(Users:="myUser")>
     Public Function GetTodoItems() As IQueryable(Of TodoItem)

La classe dérivée hérite de System.Web.Mvc.AuthorizeAttribute , et le projet est déployé sur IIS, avec Authentification Windows & usurpation d'identité permis , et Authentification Anonyme désactivé.

si j'ajoute la même autorisation personnalisée à un contrôleur MVC, alors cela fonctionne. Mais sur les Controllers API, rien. Si l'attribut Authorize n'avait pas fonctionné non plus, il aurait eu plus de sens. Ai-je raté quelque chose? Est-ce un comportement attendu, ou un bug dans la Beta?

14
demandé sur Szilard Muzsi 2012-02-28 17:42:06

2 réponses

vous devez utiliser System.Web.Http.AuthorizeAttribute du système.Web.Http.dll pour API Web au lieu de System.Web.Mvc.AuthorizeAttribute .

C'est-à-dire, parce que namespace System.Web.Http.AuthorizeAttribute est dérivé de AuthorizationFilterAttribute . Les filtres sont gérés automatiquement par L'API Web. Dans ma propre implémentation, j'ai dérivé directement de AuthorizationFilterAttribute pour gérer l'authentification HTTP de base.

31
répondu paulius_l 2012-02-28 14:50:36

j'ai construit ma propre implémentation personnalisée pour L'autorisation de base:

http://remy.supertext.ch/2012/04/basic-http-authorization-for-web-api-in-mvc-4-beta /

peut-être que ça aide.

4
répondu Remy 2012-04-26 07:07:29