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

标签 asp.net-mvc-4 asp.net-web-api

我正在尝试在我的 Web API Controller 上实现自定义授权属性,但遇到了意外行为。

     <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 Controller ,则它可以工作。但是在 API Controller 上,什么都没有。如果Authorize属性也不会起作用,它会更有意义。我错过了什么吗?这是预期的行为,还是 Beta 版中的错误?

最佳答案

您应该使用 System.Web.Http.AuthorizeAttribute来自 System.Web.Http.dll for Web API 而不是 System.Web.Mvc.AuthorizeAttribute .

也就是说,因为 namespace System.Web.Http.AuthorizeAttribute源自 AuthorizationFilterAttribute .过滤器由 Web API 自动处理。在我自己的实现中,我直接派生自 AuthorizationFilterAttribute用于处理基本的 HTTP 身份验证。

关于asp.net-mvc-4 - ASP.NET Web API 的自定义 MVC AuthorizeAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9482982/

相关文章:

.net - ASP.NET Web API(测试版)是否可以与最新的 Mono(稳定版)一起运行?

c# - 从 ASP.NET 5 Web API 返回文件

javascript - 在 Angular 和 .Net MVC 5/Web API 中使用 http.delete

asp.net-mvc - 如何解决 MVC4 在 View 中呈现 bool 值的重大变化

javascript - 如何在离线模式下不加载 Google 图表

c# - 尝试在 MVC4 和 Razor 上使用两个布局页面

c# - 在 Azure 中托管 Web Api 的推荐方法

mysql - 使用entitframework将excel数据上传到mysql数据库

c# - 通过 cookie 控制对页面的访问

visual-studio - 使用 Azure Active Directory 对 Web API 进行身份验证