我试图在Web API控制器上实现自定义授权属性,但遇到了意外的行为。ASP.NET Web API的自定义MVC AuthorizeAttribute
<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身份验证 & 模拟启用和匿名身份验证禁用。
如果我将相同的自定义授权添加到MVC控制器,那么它的工作原理。但在API控制器上,什么都没有。如果Authorize
属性也不起作用,它会更有意义。我错过了什么吗?这是预期的行为还是Beta版中的错误?
谢谢,改变命名空间的工作!使用'System.Web.Mvc.AuthorizeAttribute'工作在Web API上似乎很奇怪,而我的类从那个确切的类派生出来,却没有。 – 2012-02-28 16:04:09
似乎很多类型在MVC和Web API之间重复。也许他们会被合并,我们将在发布中获得单一样本类型。所以,可能任何一个'AuthorizeAttibute'对象都在内部检查,只是猜测。 – 2012-02-28 16:08:06