当前位置:编程学习 > C#/ASP.NET >>

多用户登录导致session共享问题。

一个网站,一个ASP.NET开发的应用系统。

用户登录系统是通过网站上的一个连接,当用户通过这个连接打开系统,并且用不同的用户名密码登录后,之前登录的信息就被之后登录的覆盖了。

有啥好的避免此问题的解决方法吗?

谢谢大家。 --------------------编程问答-------------------- 顶一把~ --------------------编程问答-------------------- 你的登录信息存放在那里? --------------------编程问答-------------------- 本来就应该如此。

同一个会话里,Session就是Session,人家Session的自始至终的定义都是基于会话作用域,没有理由Session不是Session。如果你希望有新的机制,抛弃Session,自己创造。 --------------------编程问答-------------------- .....,有这种问题,你用的是什么来存放登陆信息
--------------------编程问答-------------------- 没听说过session共享…… --------------------编程问答-------------------- 我们用傲游浏览器打开你说的那个链接.用户通过用户名登陆进了系统,然而其他人通过别的电脑登陆系统这两个人的Session 是不相干的,如果有两个在同一台机器进行登陆你只要打开两个傲游浏览器就可以了这两个傲游浏览器就相当于两个客户端,也是互不相干的 --------------------编程问答-------------------- 用aplication --------------------编程问答-------------------- session里只存放loginID,详细信息是在数据库里的。
另外我发现,手工打开两个浏览器并用不同用户名登录并不会发生这样的问题,只有在网站上打开系统登录时才这样。 --------------------编程问答-------------------- 可以考虑cookies 虽然session也是部分cookies --------------------编程问答-------------------- 不可能两个SESSION用户 共存。。矛盾啊~

这个问题可以忽略不用考虑 --------------------编程问答-------------------- 这个系统就是有这样的特殊性,个人可能不操作,统一交给单位来操作,这样单位为了偷懒,往往点开多个页面,同时用不同的用户名登录多次,这样就产生问题了。查到资料说:“每个IE都需要单独打开,如果只是在前一个IE中打开连接的话,那这两个IE窗口是在同一个进程内,对于访问网站来说,这是共享同一个session ”,但是我该怎么避免呢?不可能让用户手工打开几个IE,然后输入地址登录系统啊,他们都是点网站上的连接来登录的。 --------------------编程问答-------------------- 难道真的无解? --------------------编程问答-------------------- 选项卡式的浏览器,容易窗口中各个页面的SessionID是一样的,是同一个用户。

你的问题,等于问:我在同一个Session环境里多用户登录为什么是同一个Session?

这纯粹是你先入为主误解Session造成的。只有自己从根本上去改变你的最初的设计。 --------------------编程问答-------------------- 不用选项卡式浏览器也是一样。
按照一般的设计,总归是将用户的某个唯一属性存入session便于系统以后调用,不然在此种情况下session能干什么,岂不是用都不能用?
现在产生这样的问题,我也知道原因所在,但是我想知道有没有什么方法能避免,而不是大动干戈的改变整体设计。 --------------------编程问答-------------------- 比如,如何让用户通过网站连接点击出系统登录界面的时候,脱离同一个session环境,就像是手工打开两个IE浏览器一样的那种效果,那么问题就解决了。或者,如何在登录代码中判断是否有同样的session存在,从而避免它。 --------------------编程问答-------------------- 原来是想防止共享,我还以为你是想共享的话就用application

--------------------编程问答-------------------- 是啊,怎么防止在同一台电脑用同一帐户同时多次登录。 --------------------编程问答-------------------- 本来也应该是这样,但是有时候我们也不想这样,看看我以前发的一张帖子,和我问的问题一样啊,兄弟,哈哈,最后我是没有得到什么解决方法的

http://community.csdn.net/Expert/TopicView.asp?id=5519682
这是我前几天发的和你一样的问题,可惜现在沉下去了 --------------------编程问答-------------------- 我后来是用cookie来避免这个问题的 --------------------编程问答-------------------- 使用COOKIE+url重写技术解决 。 --------------------编程问答-------------------- 一个用户a在线的时候,如果a再登录 就不让登就行了。判断下啊。 --------------------编程问答--------------------
引用 17 楼 icezs 的回复:
是啊,怎么防止在同一台电脑用同一帐户同时多次登录。


你不是用了Session么  --------------------编程问答--------------------
引用 22 楼 valefish 的回复:
引用 17 楼 icezs 的回复:
是啊,怎么防止在同一台电脑用同一帐户同时多次登录。


你不是用了Session么

如果用户使用浏览器的标签页登陆多个帐号,前面的Session将被后面的Session覆盖掉. --------------------编程问答-------------------- 内存里可以 --------------------编程问答-------------------- 每个用户的Sessionid不同呀!不会彼此覆盖的! --------------------编程问答-------------------- 欢迎大家使用本酷哥自主开发的网站自动登陆系统yaolixing.oltag.com,谢谢惠顾,欢迎来搞. --------------------编程问答-------------------- 楼主所遇到的问题,就是我开发网站oltag.com时遇到的问题,浏览器标签页打开同一个URL,服务器端是共享一个session,所谓session是服务器端的cookie,服务器将一串sessionid保存到客户端cookie里,这样客户端每发一个请求,将携带该sessionid给服务器,服务器通过该id,来查找服务器端cookie对应的用户记录,这一过程就是session认证。在客户端,浏览器同一个窗口不同标签页加载同一个URL,用户记录是保存在相同的cookie文件里,这样当同一个客户通过两个马甲来登录的话,后一个马甲将重写覆盖写该cookie,导致服务器只认为后一个session有效。解决的办法是不让浏览器写同一个cookie,方法之一就是让浏览器标签页打开不同的url,这样cookie就不会被保存在一个文件里,即url重写,比如用户a,登录用a.oltag.com,用户b登录,用b.oltag.com. --------------------编程问答-------------------- 你在同一天电脑上登的吧... --------------------编程问答-------------------- ddd --------------------编程问答-------------------- 擦,后面都跑题了,人家说的是一套系统不同用户不同电脑登陆,后者吧前者覆盖掉了,你们扯到哪儿去了,我擦 --------------------编程问答-------------------- 别争啦!直接用cookies,撒问题的解决啦 --------------------编程问答-------------------- 检查一下你的web.config,是不是在 <sessionState 里面设置 cookieless 为 true或UseUri了,调整一下(通常不需要设置)。 --------------------编程问答-------------------- 检查一下你的web.config,是不是在 <sessionState 里面设置 cookieless 为 true或UseUri了,调整一下(通常不需要设置)。 --------------------编程问答-------------------- 登陆之前用cookies做判断,有该用户就不用登录了,没有则登录。 --------------------编程问答-------------------- 检查一下你的web.config,是不是在 <sessionState 里面设置 cookieless 为 true或UseUri了,调整一下(通常不需要设置)。 --------------------编程问答-------------------- 登录的时候用cookies做判断,发现存在则不需要登录,不存在则登录 --------------------编程问答-------------------- 是你测试方式有问题吧?同一台电脑,你怎么拿来测试肯定会覆盖啊,你要俩台不同电脑才行哦。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,