Estoy tratando de implementar un atributo de autorización personalizado en los controladores de mi API web, pero me encontré con un comportamiento inesperado.Custom MVC AuthorizeAttribute para ASP.NET Web API
<Authorize(Users:="myUser")>
Public Function GetTodoItems() As IQueryable(Of TodoItem)
El código anterior funciona muy bien: Permitirá "myUser" para recuperar los artículos, bot nadie se le permite el acceso cosa. Sin embargo, cuando intento el mismo enfoque con mi autorización personalizada, se omite todo el cheque y cualquier usuario puede acceder al recurso. Ni los métodos reemplazados AuthorizeCore
ni OnAuthorization
en mi clase derivada se llaman.
<MyAuth(Users:="myUser")>
Public Function GetTodoItems() As IQueryable(Of TodoItem)
La clase derivada hereda de System.Web.Mvc.AuthorizeAttribute
, y el proyecto se implementa en IIS, la autenticación de Windows & suplantación habilitada y autenticación anónima discapacitados.
Si agrego la misma autorización personalizada a un controlador MVC, entonces funciona. Pero en los controladores API, nada. Si el atributo Authorize
tampoco hubiera funcionado, hubiera tenido más sentido. ¿Me estoy perdiendo de algo? ¿Es esto un comportamiento esperado, o un error en la Beta?
Gracias, cambiando el espacio de nombres funcionó! Todavía parece extraño que el uso de 'System.Web.Mvc.AuthorizeAttribute' funcionara para la API web, mientras que mi clase, que derivaba de esa clase exacta, no lo hizo. –
Parece que hay muchos tipos duplicados entre MVC y la API web. Tal vez se fusionarán y tendremos una única muestra de tipo en el lanzamiento. Entonces, tal vez cualquiera de los objetos 'AuthorizeAttibute' se esté revisando internamente, solo una conjetura. –