猿问

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

Forms身份验证中 普通的请求 GET之类的 ,当后台返回是401时会自动跳转到登陆页面。 那么我如果是ajax请求它也会给我跳转,我想问下 如何能让 ajax请求不自动跳转页面啊 。 直接返给给客户端401就行。 
繁花如伊
浏览 445回答 6
6回答

开心每一天1111

貌似用默认的forms认证方式,验证不通过肯定会自动跳转的。要实现你的功能,需要研究一下forms认证方式是在哪里跳转的,想法子在跳转前面拦截掉然后使用你自己的响应方式,或者参考该模块,使用自己的认证模块,大部分使用forms认证模块实现,跳转的部分自己来做。

呼唤远方

Forms验证的重定向是必然发生的。

绝地无双

我现在就要阻止它发生 。我想能不能通过自己给他写跳转那块 还是能不能通过配置来不让他跳转。

吃鸡游戏

@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 的话,请求处理器会自动重定向,目前我还没想到如何从请求处理器来修改的方法。上面的方法你可以临时使用。

跃然一笑

@Launcher: 这个问题我查了好久 好像还是没办法阻止它转发。 谢谢你的回答。 

弑天下

ajax返回的有状态编号,做个判断就行了。
随时随地看视频慕课网APP
我要回答