貌似用默认的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: 这个问题我查了好久 好像还是没办法阻止它转发。 谢谢你的回答。