当前位置: 首页 > 编程语言 > C#

HttpStatusCodeResult(401)returns-302Found-share

时间:2023-04-10 13:50:25 C#

身份验证,当用户没有权限使用某些资源时的403等)而不是在jQuery中处理它们。但问题是,当我尝试返回401时,它总是返回“302:Found”。自定义状态代码有什么诀窍,为什么不起作用?publicActionResultMy(){if(User.Identity.IsAuthenticated==false){returnnewHttpStatusCodeResult(401,"用户未通过身份验证。");//返回"302:Found"}//...其他代码...}编辑1:有趣的一点:如果我用这样的404替换401:returnnewHttpNotFoundResult("Userisnotauthenticated.");然后它确实给出了404并且jQuery可以捕获问题。但是,由于错误代码不同,这不是一个优雅的解决方案。编辑2:302对我不好,因为结果将在jQuery.get().fail()中,但302不会触发fail()哈哈,这是一个很好的问题,auth在MVC中的工作方式是当它抛出当您未登录并尝试访问安全页面时出现401异常。MVC然后捕获此异常并将用户重定向到登录页面(这是您看到的302)我认为您可以做一些事情来修复它:编辑根据您的评论,以下代码将通过ajax请求转换所有重定向401。这是避免列表问题的一种方法。以上就是C#学习教程:HttpStatusCodeResult(401)returns"302Found"。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——publicclassMvcApplication:HttpApplication{//如果我们是一个ajax请求,并执行302,那么我们实际上需要执行401if(Context.Response.StatusCode==302&&context.Request.IsAjaxRequest()){Context.Response.Clear();上下文.Response.StatusCode=401;}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: