2016-01-21 42 views
0

我在我的MVC网站中使用vanilla Identity 2.x进行身份验证。客户端,angularjs发送一个post请求给账户控制器的Login方法。拒绝ASP.NET MVC 5登录POST Http请求与401.1

现在的用例是当用户被禁用时拒绝带有HTTP状态码401.1的http post请求。

Vanilla Login方法根据登录成功或失败返回一个bool值。

我试着发送一个StatusCode设置为401的Http响应,但浏览器在头变量中接收到了一个带有401的200 OK。

我该如何发送401响应,而不是被200代码劫持。

如果我使用HttpUnauthorized,浏览器会收到一个500内部服务器以及整个aspx页面内容。

我使用MVC 5.2,C#6.0

回答

0

您应该抛出适当的异常 - HttpResponseException。尝试那样做:

var message = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "ohhh no!" };  
throw new HttpResponseException(msg); 
+0

的浏览器接收到一个500的StatusCode – Dev

+0

应当将用户重定向如果HttpResponse.StatusCode被设置为401,但只有当在Web.config的<认证/>部分被发现 –