Szi*_*zsi 14 asp.net-mvc-4 asp.net-web-api
我试图在我的Web API控制器上实现自定义授权属性,但遇到了意外的行为.
<Authorize(Users:="myUser")>
Public Function GetTodoItems() As IQueryable(Of TodoItem)
Run Code Online (Sandbox Code Playgroud)
上面的代码工作得很好:它将允许"myUser"检索项目,机器人没有其他人被允许访问.但是,当我使用自定义授权尝试相同的方法时,将跳过整个检查,并且任何用户都可以访问该资源.我的派生类中AuthorizeCore的OnAuthorization被覆盖的方法都没有被调用.
<MyAuth(Users:="myUser")>
Public Function GetTodoItems() As IQueryable(Of TodoItem)
Run Code Online (Sandbox Code Playgroud)
派生类继承自System.Web.Mvc.AuthorizeAttribute,并且项目部署在IIS上,启用了Windows身份验证和模拟,并禁用了匿名身份验证.
如果我将相同的自定义授权添加到MVC控制器,那么它可以工作.但是在API控制器上,什么都没有.如果该Authorize属性也不起作用,那就更有意义了.我错过了什么吗?这是预期的行为,还是Beta中的错误?
pau*_*s_l 31
您应该使用System.Web.Http.AuthorizeAttributeSystem.Web.Http.dll for Web API而不是System.Web.Mvc.AuthorizeAttribute.
也就是说,因为namespace System.Web.Http.AuthorizeAttribute是源于AuthorizationFilterAttribute.过滤器由Web API自动处理.在我自己的实现中,我直接从AuthorizationFilterAttribute处理基本HTTP身份验证中派生出来.
| 归档时间: |
|
| 查看次数: |
21849 次 |
| 最近记录: |