带有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