多标签IESession覆盖的解决方案
来源:互联网 发布:日语等级考试分数算法 编辑:程序博客网 时间:2024/05/16 12:36
在IE6中,每启动1个IE,在进程中就会增加1个iexplor.exe进程,一个此进程就表示1个session对象,就会产生1个唯一sessionID与之对应。
但是在多页签的浏览器例如IE7,IE8 ,没启动一个IE,此时浏览器中会有俩个iexplor.exe进程存在,1个代表当前窗口对象,另1个代表页签对象,如果在窗口中新增加页签的话,iexplor.exe的数量会加1.
在多页签的浏览器中,进行测试,页面的page_load事件中,增加代码测试:
string a = Session.SessionID;
Response.Write(a + "<br>");
发现在1个窗口中,无论打开多少个页签,都是同1个sessionID,那么问题就出现了,比如说:我在一个多标签的浏览器中,打开了俩个页签,分别叫A页签与B页签,那么我此时在A页签中打开1个登陆界面,输入A账户的用户名与密码,并且用session保存这个A用户的账号与密码,然后在B页签里面输入B的账户与密码,并且用session保存起来,那么此时你回头再刷新下A的页签,你会发现A页签里的session保存的A的信息全部被B的信息所覆盖了,这就是多页签使用同1sessionID的产生覆盖的核心机制。那么我们该如何处理呢?
我的解决方案是:1个IE窗口只能做1个登陆操作,如果你想再登陆,那么重新打开1个IE对象。
protected void Button1_Click(object sender, EventArgs e)
{
if (Session["a"] != null)
{
PublicMethods.ShowMessageBox(this, "同一浏览器不能重复登录!");
return;
}
Session["a"] = this.txtName.Text.Trim();
Response.Redirect("Test.aspx");
}
原理说明:1个多页签IE窗口无论打开多少个页签都是一个sessionID,那么这个sessionID对象下有1个key为a的session内容,如果你第一次登陆的话,这个session为a的内容为Null状态,如果你打开1个页签再做1个登陆操作的话,那么此时session a 就不为Null,提示用户新开1个窗口进行操作。因为新打开的IE会产生1个新的不重复的sessionID,此时这个sessionID对象对应的session a 还是为Null,那么可以进行登陆操作了。
- 多标签IESession覆盖的解决方案
- select覆盖div的解决方案
- select覆盖div的解决方案
- 标签TabHost图片文字覆盖的问题
- 关于div覆盖select标签的问题
- windows 系统覆盖 linux 系统的解决方案
- 调用flash时覆盖html标签的决方法
- document.write插入js标签会覆盖页面的问题
- Static控件背景透明时文字覆盖问题的解决方案
- Android——自定义Actionbar左侧覆盖不全的解决方案
- iso中输入框被软键盘覆盖的解决方案
- 定位底部的输入框被软键盘覆盖解决方案
- JSTL标签库不起作用的解决方案
- JSTL标签库不起作用的解决方案 .
- NVelocity标签设置缓存的解决方案
- NVelocity标签设置缓存的解决方案
- word标签 Range插入xml的解决方案
- JSTL标签库不起作用的解决方案 .
- Hadoop学习笔记四--Hadoop中的流
- uboot start.S分析
- Java ssh 访问windows/Linux
- android中获取res的字符串
- IE7自动完成口令获取
- 多标签IESession覆盖的解决方案
- [Linux]modify vim's color in ubuntu
- 使用JAVA引用类型传递后台信息给前台的进度条
- openAmf学习
- 游戏外挂编写学习总结
- [Linux]Tar Command
- [Linux]Date and Time Commands
- 2012届华为校园招聘上机考试题目2(9月6日下午1点场)
- 读配置文件properties