Пользовательский MVC AuthorizeAttribute для ASP.NET Web API - PullRequest
14 голосов
/ 28 февраля 2012

Я пытаюсь реализовать пользовательский атрибут авторизации на моих контроллерах Web API, но столкнулся с неожиданным поведением.

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

Приведенный выше код работает очень хорошо: он разрешит "myUser" чтобы получить предметы, бот никто не имеет доступа.Однако, когда я пытаюсь использовать тот же подход с моей пользовательской авторизацией, вся проверка пропускается, и любой пользователь может получить доступ к ресурсу.Ни переопределенные методы AuthorizeCore, ни OnAuthorization в моем производном классе не вызываются.

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

Производный класс наследуется от System.Web.Mvc.AuthorizeAttribute, и проект развертывается в IIS с WindowsАутентификация & Олицетворение включено , а Анонимная аутентификация отключена.

Если я добавлю такую ​​же пользовательскую авторизацию в контроллер MVC, тогда она будет работать.Но на API-контроллерах ничего нет.Если бы атрибут Authorize тоже не сработал, это имело бы больше смысла.Я что-то пропустил?Это ожидаемое поведение или ошибка в бета-версии?

Ответы [ 2 ]

31 голосов
/ 28 февраля 2012

Вы должны использовать System.Web.Http.AuthorizeAttribute из System.Web.Http.dll для веб-API вместо System.Web.Mvc.AuthorizeAttribute.

То есть, поскольку namespace System.Web.Http.AuthorizeAttribute является производным от AuthorizationFilterAttribute. Фильтры обрабатываются автоматически веб-API. В моей собственной реализации я получил непосредственно от AuthorizationFilterAttribute для обработки базовой HTTP-аутентификации.

4 голосов
/ 26 апреля 2012

Я создал свою собственную реализацию для базовой авторизации:

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

Может быть, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...