请大家继续讨论这个好问题http://expert.csdn.net/Expert/topic/1955/1955542.xml?temp=.2365686
http://expert.csdn.net/Expert/topic/1955/1955542.xml?temp=.2365686 问题点数:10、回复次数:2Top
1 楼ccmoon(IzuaL)回复于 2003-09-01 18:00:26 得分 5
大哥
这是不好控制的
有一个不是办法的办法
就是把session的生存时间尽量的设置的短一点
因为页面直接关闭的话session没有了但是服务器却不知道
这样就会限制一个人的登陆
它直接关闭页面会在一段时间内自己也无法登陆
所以你可以设置session时间短一点
Top
2 楼piggybank(吞硬币的小猪)回复于 2003-09-01 18:22:34 得分 5
1、第二次登录前检查是否还在登录状态,如果已经登录了,则拒绝登录——很少这么做的,因为不方便;
2、第二次登录时,将第一个会话强行注销——友好的方式是提示用户:你已经在另外一个位置登录了,当前会话被强行过期。
注销会话的方法就多了,如果你用的是 jsp 自己提供的 Session,就把你 Session 里面保存的用于判断是否已经登录的变量置为 false,再保存提示信息到一个变量。当用户继续浏览的时候,其它网页判断该变量时就知道已经过期并提示用户了。
如果是自己做的 Session 机制——比如我喜欢用数据库来实现,则删除该用户原先的Session记录,用户浏览其它网页时就知道已经被注销了,而新的登录的SessionKey显然与原先不同。
最后,有朋友说用cookie等等,实际上和你用 jsp 的 session 一样的道理。如果浏览器禁用了 cookie,jsp 的 session 机制一样实效——因为asp/jsp的Session机制就是利用有效期仅仅为浏览器打开期间的Cookie来实现的(Cookie里面保存了来自服务器的SessionKey来区分不同的会话,保存了Session创建的时间和最新更新时间,虎虎,浏览器Session欺骗的原理哦)。
Top
相关问题
- http://www.csdn.net/expert/topic/548/548682.xml?temp=.5898249
- http://www.csdn.net/expert/topic/609/609742.xml?temp=.5661432
- http://www.csdn.net/expert/topic/645/645491.xml?temp=.4414636
- http://expert.csdn.net/Expert/topic/1180/1180423.xml?temp=.7148706
- http://expert.csdn.net/Expert/topic/1212/1212736.xml?temp=.227688
- http://expert.csdn.net/Expert/topic/1252/1252940.xml?temp=.8990595
- http://expert.csdn.net/Expert/topic/1267/1267664.xml?temp=.574917
- http://expert.csdn.net/Expert/topic/1315/1315545.xml?temp=.7913782
- http://expert.csdn.net/Expert/topic/1324/1324371.xml?temp=.8989069
- http://community.csdn.net/Expert/topic/3721/3721288.xml?temp=.2978174



