首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果授权失败,Asp.net mvc [Authorize]属性将返回http 302而不是http 401

问如果授权失败,Asp.net mvc [Authorize]属性将返回http 302而不是http 401
EN

Stack Overflow用户
提问于 2014-10-24 08:08:12
回答 2查看 2.6K关注 0票数 2

我已经创建了一个新的asp.net MVC5Web应用程序,并且我使用个人帐户(表单身份验证)身份验证。这将构建一个完整的帐户控制器。然后,我创建了一个名为People的新控制器,并在其前面添加了Authorize属性,如下所示:

代码语言:javascript
复制
 [Authorize]
    public class PeopleController : Controller
    {

然后,我尝试在不登录的情况下直接访问控制器,因此我被重定向到登录页面。但我注意到,使用IE F12 developer tool,http状态将是302,而不是401,尽管根据http标准,如果请求身份验证失败,则应用程序应返回http 401,这是我得到的结果:

​

​

有人对此有什么建议吗?我的意思是,任何应用程序都应该完全符合http标准吗?或者,如果用户没有通过身份验证而没有引发http 401错误(就像默认的asp.net mvc正在做的那样),那么将用户重定向到登录页面没有问题吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-10-24 09:38:10

在这种情况下,返回302或401http状态码取决于您是否希望控制当用户从服务器端或客户端未经授权时发生的情况。它还取决于您发出的请求是完整页面提交还是AJAX请求。AJAX风格的请求通常倾向于401,而完整页面提交倾向于302重定向。

如果您希望在服务器端处理未经授权的情况,并将用户重定向回登录页面,那么通常的做法是返回302重定向到该页面。

如果你想在客户端处理这种情况,那么你可以让请求返回401。然后,您将在客户端中有一个401处理程序,它将检测到它并执行客户端重定向到登录页面。如果您希望在同一页面上显示用户不再被授权的消息,而不是重定向,也可以使用401。

您将看到Web API Authorize属性返回401和MVC Authorize属性执行302重定向。

票数 2
EN

Stack Overflow用户

发布于 2014-10-24 08:14:16

302是进行url重定向的一种非常常见的方法。导致302而不是401错误的将是url重定向。这表明它已将您从/people/移回到/Account/Login。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26539530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档