asp.net-mvc-4 – ASP.NET Web API的自定义MVC AuthorizeAttribute

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-4 – ASP.NET Web API的自定义MVC AuthorizeAttribute前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在我的Web API控制器上实现一个自定义授权属性,但遇到了一个意想不到的行为.
<Authorize(Users:="myUser")>
     Public Function GetTodoItems() As IQueryable(Of TodoItem)

上面的代码工作得很好:它将允许“myUser”检索项目,bot没有人被允许访问.但是,当我通过自定义授权尝试相同的方法时,将跳过整个检查,任何用户都可以访问该资源.我的派生类中的AuthorizeCore和OnAuthorization被覆盖的方法都不被调用.

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

派生类继承自System.Web.Mvc.AuthorizeAttribute,该项目部署在IIS上,Windows Authentication&启用模拟,禁用匿名身份验证.

如果我添加相同的自定义授权给MVC控制器,那么它的工作.但在API控制器上,什么也没有.如果授权属性也不会有效,那就更有意义了.我错过了什么吗?这是预期的行为还是测试版中的错误

解决方法

您应该使用System.Web.Http.Attribute从System.Web.Http.dll为Web API而不是System.Web.Mvc.AuthorizeAttribute.

也就是说,因为名称空间System.Web.Http.AuthorizeAttribute是从AuthorizationFilterAttribute派生的.过滤器由Web API自动处理.在我自己的实现中,我直接从AuthorizationFilterAttribute派生来处理基本的HTTP身份验证.

猜你在找的asp.Net相关文章