为了账号安全,请及时绑定邮箱和手机立即绑定

Forms身份验证如何遇到401不跳转。

Forms身份验证如何遇到401不跳转。

繁花如伊 2018-12-07 07:26:42
Forms身份验证中 普通的请求 GET之类的 ,当后台返回是401时会自动跳转到登陆页面。 那么我如果是ajax请求它也会给我跳转,我想问下 如何能让 ajax请求不自动跳转页面啊 。 直接返给给客户端401就行。 
查看完整描述

6 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

貌似用默认的forms认证方式,验证不通过肯定会自动跳转的。要实现你的功能,需要研究一下forms认证方式是在哪里跳转的,想法子在跳转前面拦截掉然后使用你自己的响应方式,或者参考该模块,使用自己的认证模块,大部分使用forms认证模块实现,跳转的部分自己来做。
查看完整回答
反对 回复 2018-12-09
?
呼唤远方

TA贡献1856条经验 获得超11个赞

Forms验证的重定向是必然发生的。
查看完整回答
反对 回复 2018-12-09
?
绝地无双

TA贡献1946条经验 获得超4个赞

我现在就要阻止它发生 。我想能不能通过自己给他写跳转那块 还是能不能通过配置来不让他跳转。
查看完整回答
反对 回复 2018-12-09
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

@Rainr: 我写了个不太好的实现,通过将 401 响应修改为 403 来禁止重定向,在你的所有 Controller 中重载 ExecuteCore 方法,如下: protected override void ExecuteCore() { if (!base.ControllerContext.IsChildAction) { base.TempData.Load(base.ControllerContext, this.TempDataProvider); } try { string requiredString = this.RouteData.GetRequiredString("action"); if (!this.ActionInvoker.InvokeAction(base.ControllerContext, requiredString)) { this.HandleUnknownAction(requiredString); } if (base.HttpContext.Response.StatusCode == 401) base.HttpContext.Response.StatusCode = 403; } finally { if (!base.ControllerContext.IsChildAction) { base.TempData.Save(base.ControllerContext, this.TempDataProvider); } } } 如果是 401 的话,请求处理器会自动重定向,目前我还没想到如何从请求处理器来修改的方法。上面的方法你可以临时使用。
查看完整回答
反对 回复 2018-12-09
?
跃然一笑

TA贡献1826条经验 获得超6个赞

@Launcher: 这个问题我查了好久 好像还是没办法阻止它转发。 谢谢你的回答。 
查看完整回答
反对 回复 2018-12-09
?
弑天下

TA贡献1818条经验 获得超8个赞

ajax返回的有状态编号,做个判断就行了。
查看完整回答
反对 回复 2018-12-09
  • 6 回答
  • 0 关注
  • 444 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信