带有AuthorizeAttribute的ASP.NET Web API授权

使用新的ASP.NET Web API测试版。 我似乎无法获得验证用户身份的建议方法。 在建议的方法似乎是,将[Authorize]过滤器添加到API控制器。 例如:

[Authorize] 
public IEnumerable<Item> Get()
{
    return itemsService.GetItems();
}

这虽然不符合预期。 请求资源时,您将被重定向到登录表单。 哪个不适合用于RESTful webapi。

我应该如何继续? 它会在未来的版本中以不同的方式工作吗?还是应该回到实施我自己的操作过滤器?


仔细检查你使用的是System.Web.Http.AuthorizeAttribute而不是System.Web.Mvc.AuthorizeAttribute 。 这比我之前。 我知道WebAPI团队正在试图将所有东西放在一起,以便MVC用户熟悉它,但我认为某些东西是不必要的混淆。


将您的身份验证模式设置为

<authentication mode="None" />

指定不认证。 您的应用程序只希望匿名用户或应用程序提供自己的身份验证。

http://msdn.microsoft.com/en-us/library/532aee0e.aspx

当然,你必须通过头文件或令牌等来提供某种认证。 您也可以指定Windows并使用内置auth通过标头。

如果此网站混合在API和实际需要表单设置的页面之间,那么您将需要编写自己的处理。

所有的属性都是返回一个HttpUnauthorizedResult实例,重定向是在属性之外完成的,所以它不是问题,它是你的身份验证提供者。


最后,我找到了一个解决方案:ASP.NET MVC 4 WebAPI授权

本文将介绍如何解决此问题。

链接地址: http://www.djcxy.com/p/20531.html

上一篇: ASP.NET Web API Authorization with AuthorizeAttribute

下一篇: mvc 5 check user role