有一个很常见的需求,某个页面需要用户登录才能访问,或者某个操作需要用户登录

这就需要检测用户登录,一般是使用Ajax去检测是否登录,当用户未登录时跳转到登录页面

那么问题来了····

有的时候我们跳转到登录是直接Redirect,而有的时候因为是使用的Ajax,所以直接必须在客户端用Js使用location.href进行跳转

网上找了好久···找不到,然后想起Ext.Net实现了这个需求

就直接参考了Ext.Net的实现,也就是根据需求拦截Response.Redirect的跳转并转换为location.href

直接上代码

 public class AjaxHttpModule : IHttpModule
{
public void Dispose()
{
throw new NotImplementedException();
} public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += context_PreSendRequestHeaders;
} void context_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
HttpContext context = application.Context;
if ((context.Response.StatusCode == 0x12e) && (context.Request.Headers.AllKeys.Contains("X-Requested-With")))
{
string redirectLocation = context.Response.RedirectLocation;
context.Response.ClearContent();
context.Response.StatusCode = ;
context.Response.ContentType = "text/html";
context.Response.Charset = "utf-8";
context.Response.Headers.Remove("location");
context.Response.Output.Write("{\"script\":\"window.location.href='" + redirectLocation + "';\"}");
}
}
}

代码很简单,当检测到响应到状态码为302并且是一个Ajax请求时,则自定义响应内容

将跳转的地址拼接为一个json字符串由客户端解析,最终解析结果为

{script:"window.location.href='/game/Play';"}

拦截Response.Redirect的跳转并转换为Js的跳转的更多相关文章

  1. 关于Response.Redirect 端口不一致的跳转

    如果内网和外网的端口号设置的不相同,那在使用Response.Redirect跳转的时候会无法成功.需要做以下设置: <system.web> <httpRuntime useFul ...

  2. aspx在页面跳转(Response.Redirect)时丢失session问题及解决办法

    [问题描述] 假设a.aspx.cs页面保存有Session["empid"]="3",当a.aspx.cs通过Response.Redirect(" ...

  3. Response.Redirect 无法跳转页面

    错误现象:Response.Redirect(Server.MapPath("BackIndex.aspx")); 打断点测试执行了这一句,Server.MapPath(" ...

  4. Response.Redirect("");Server.Transfer("")跳转页面的区别

      Response.Redirect("") Server.Transfer("") 转向其他站点 能 不能(只能站内转向) 是否可带QueryString参 ...

  5. 页面跳转 Server.Transfer和 Response.Redirect的区别

    1.Server.Transfer 用于把处理的控制权从一个页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变.因此你能从a页面跳转到b页面 ...

  6. asp.net知识汇总-页面跳转Server.Transfer和Response.Redirect

    1. Server.Transfer 服务器端跳转 webform1.aspx跳转到webform2.aspx页面 webform1.aspx代码如下: protected void Page_Loa ...

  7. 关于ASP.NET MVC中Response.Redirect和RedirectToAction的BUG (跳转后继续执行后面代码而不结束进程)以及处理方法

    关于ASP.NET MVC中Response.Redirect和RedirectToAction的BUG (跳转后继续执行后面代码而不结束进程)以及处理方法   在传统的ASP.NET中,使用Resp ...

  8. Response.Write("<script>alert('弹出对话框!')</script>") 后跟Response.Redirect("page.aspx");不能弹出对话框,直接跳转页面了 如何解?

    Response.Write和Response.Redirect一起用的时候就会这样,write脚本和redirect脚本不能同时使用,这样不会执行脚本,最好使用ClientScript 改进方法: ...

  9. Response.Redirect("x.aspx);跳转后session为null的解决方法

    通常我们做登陆的时候都是登录成功后为管理员保存一些信息,一般都会写类似下面的代码 if(登录成功) { Session["xx"] = "user"; Resp ...

随机推荐

  1. V9 二次开发技术篇之 模型数据库

    应V9粉丝的建议,本人今天讲一下 MVC中的M 数据库模型 首先 在 phpcms\model  建一个模型文件test_model.class.php <?phpdefined('IN_PHP ...

  2. 游戏算法中lua脚本详解

    此外,函数本身也是一个变量,比如: dp@dp:~ % cat test.lua local mylen={} mylen.len3=function (x,y,z) return math.sqrt ...

  3. eclipse中JSP开发环境的配置

    1. Java环境 自行百度配置   2. Web Server环境安装: Web Server选择流行的Apache Tomcat .到http://tomcat.apache.org/  处下载, ...

  4. 转:对于linux下system()函数的深度理解(整理)

    这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为 ...

  5. Big Data Analytics for Security(Big Data Analytics for Security Intelligence)

    http://www.infoq.com/articles/bigdata-analytics-for-security This article first appeared in the IEEE ...

  6. FE: Responsive Web Design Overview

    布局特点 1. 单列布局 vs 水平布局 手机屏幕宽度较小,因此多采用单列布局.    反观桌面网页设计,为了利用宽度,往往使用各种水平布局的组件,诸如水平导航栏,水平按钮组,水平分页等.然而水平布局 ...

  7. css属性之!important

    提升指定样式规则的应用优先权. IE6及以下浏览器有个比较显式的支持问题存在,!important在同一条规则集里不生效.请看下述代码: div { color: #f00 !important; c ...

  8. HDOJ 1076 An Easy Task(闰年计算)

    Problem Description Ignatius was born in a leap year, so he want to know when he could hold his birt ...

  9. mysql 索引相关知识

    由where 1 =1 引发的思考 最近工作上被说了 说代码中不能用 where 1=1,当时觉得是应该可以用的,但是找不到什么理据, 而且mysql 语句优化这方面确实很薄弱   感觉自己mysql ...

  10. 我的eclipse插件推荐

    1. ER图工具 ERMaster - http://ermaster.sourceforge.net/update-site/   优点:可根据数据库生成ER图.支持生成转换成PNG,JavaDOC ...