Asp.Net Identity:Web Api请求授权失败,返回200 OK

Mik*_*e_G 11 c# asp.net-web-api asp.net-identity

我正在加速.NET 4.5中的Asp.Net Identity.我设置了一个测试应用程序,用于注册,登录并尝试拨打需要"管理员"声明的Api控制器:

[Authorize(Roles="Admin")]
public class WorkController : ApiController
Run Code Online (Sandbox Code Playgroud)

当发出没有"Admin"声明的请求时,Web Api仍然返回200-OK,但是JSON为: {Message:"Authorization has been denied for this request."}

这对我来说有点奇怪,因为这并不代表成功的要求.我期待401错误.我无法找到有关如何自定义响应的信息,或返回正确的状态代码....我想我应该问401是否适合这个,或者200是正确的状态代码使用,我应该只是处理它?

编辑:由于某种原因它现在返回401.现在我不明白为什么我之前收到JSON消息,如果它被拒绝?

Mik*_*e_G 2

我想到了。当指定 OwinStartup 类的 LoginPath 时,我收到了 JSON 消息。

  • 我刚刚在这个问题上摸不着头脑,偶然发现了这篇 StackOverflow 帖子:http://stackoverflow.com/questions/20149750/unauthorized-webapi-call-returning-login-page-rather-than-401,并且这篇布罗克艾伦文章:http://brockallen.com/2013/10/27/using-cookie-authentication-middleware-with-web-api-and-401-response-codes/ - 这似乎是一种不寻常的行为,但文章中有一个解决方法。 (6认同)