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

asp.net session覆盖问题

同一台电脑上打开2个登录页面,用2个账号登录后,session 会乱窜。


比如:第一个账号登录后,再用第二个账号登陆后,我用第一个账号 添加数据,显示的添加者是  第二个登录用户。

后登录的用户名直接覆盖了前一个的。。打印session["用户名"]出来的是第二个的用户名。。。


求高手解答!!!!


我想让2个session不要乱。。。各管各的。。。。


--------------------编程问答-------------------- 在同一的浏览下好像不行的,期待中... --------------------编程问答-------------------- 求高手解答!!! --------------------编程问答-------------------- 那你就判断是否登陆啊!

不给第二个页面登陆机会。。 --------------------编程问答-------------------- 两个不同的浏览器,一个浏览器似乎没法解决
这也不叫乱窜啊,不可能首先登陆的来吧后登陆的覆盖吧 --------------------编程问答-------------------- 现在似乎还不能,SESSEION本来只支持同一浏览器的单一模式 --------------------编程问答--------------------
引用 3 楼 qingyun1029 的回复:
那你就判断是否登陆啊!

不给第二个页面登陆机会。。


对判断一下登录的用户 --------------------编程问答-------------------- 同一浏览器 既能 你 换账号登录了,就理应 是第二个账号。 --------------------编程问答-------------------- 这个问题貌似很多网站都遇到了,但是都没去解决,例如微博和人人 --------------------编程问答-------------------- 我也遇到过这种情况,我的同时登录两个QQ,进入空间的时候,就会出现乱窜现象,后来把浏览器的cookie,浏览痕迹清空才解决的这个问题,期待你的问题能解决,
    顶起来!!! --------------------编程问答-------------------- 禁用Cookie不知道行不行,让SessionID做为URL参数传递 --------------------编程问答-------------------- 用cache,里面存入一个字典 --------------------编程问答-------------------- 没办法。
限制一个电脑只能登陆一个用户
后踢前。

你试下谷歌浏览器 --------------------编程问答--------------------
引用楼主 chenjianyong94 的回复:
同一台电脑上打开2个登录页面,用2个账号登录后,


你怎样打开的? --------------------编程问答-------------------- 在一个会话中。 --------------------编程问答--------------------
引用 7 楼 claymore1114 的回复:
同一浏览器 既能 你 换账号登录了,就理应 是第二个账号。

想问一下朋友是怎么个打开法 --------------------编程问答-------------------- 把用户显示出来 用显示出来的用户作为添加的数据 就不会出错了 --------------------编程问答-------------------- 我估计你是打开一个浏览器,然后在浏览器的不同的标签页中打开登录页面,进入系统,才会出现这种问题。 --------------------编程问答-------------------- 如果系统有框架的话,在框架中弄一个隐藏域来保存登陆后的session值,然后做处理都根据隐藏域的值来处理,这样是否可以解决这种问题。 --------------------编程问答-------------------- 楼主失踪了。

你把Session.SessionID 打出来看下,应该每个会话的id都不同。 --------------------编程问答-------------------- 登录的时候就显示已登录!!! --------------------编程问答--------------------
引用楼主 chenjianyong94 的回复:
同一台电脑上打开2个登录页面,用2个账号登录后,session 会乱窜。


比如:第一个账号登录后,再用第二个账号登陆后,我用第一个账号 添加数据,显示的添加者是 第二个登录用户。

后登录的用户名直接覆盖了前一个的。。打印session["用户名"]出来的是第二个的用户名。。。



我想让2个session不要乱。。。各管各的。。。。
是否是找开同一个项目 --------------------编程问答-------------------- 既然是用SESSION  怎么可能有2个登录页面?  你登录1个以后, 你还能打开登录页面? --------------------编程问答-------------------- 会话都在一个中.... --------------------编程问答--------------------
引用 3 楼 qingyun1029 的回复:
那你就判断是否登陆啊!

不给第二个页面登陆机会。。
++ --------------------编程问答-------------------- session基于cookies的. 

同一个浏览器打开同一个网站公用一个cookies集合的.

如果你想两个人用同一个浏览器,但是又可以区别比是两个不同的帐号.就用url的cookies. 

或者自定义一个加密串到url里面. 登录判断根据这个加密串来判断. 每次跳转或刷新页面的时候记得把这个加密串附带到url上面. --------------------编程问答-------------------- session是基于会话的,会话是基于Cookies,cookie是基于网络的 --------------------编程问答-------------------- 可以确定,在你的桌面上打开同一个浏览器程序的不同进程,其Session肯定是不同的! --------------------编程问答-------------------- 点此参考 --------------------编程问答--------------------     浏览器打开的应该是标签页在同一浏览器中,也在同一会话中,此时session 只记录最后一次信息。现在貌似还没看到这种问题的解决方法。csdn,博客园,空间都是这样的。
另开一进程,开一浏览器,就不会出这个问题, --------------------编程问答--------------------
引用 27 楼 sp1234 的回复:
可以确定,在你的桌面上打开同一个浏览器程序的不同进程,其Session肯定是不同的!


楼上正解啊  --------------------编程问答-------------------- 没碰到过 --------------------编程问答--------------------
引用 30 楼 yun15090 的回复:
引用 27 楼 sp1234 的回复:

可以确定,在你的桌面上打开同一个浏览器程序的不同进程,其Session肯定是不同的!


楼上正解啊


确实正解  你先要确定 是否分别在两个进程内 如果只是一个进程 那sessionid 是一样的 后面的当然会覆盖前面的了 两个进程的话 我还没碰到过 能共用session的办法 
--------------------编程问答-------------------- --------------------编程问答--------------------
引用 20 楼 rczjp 的回复:
登录的时候就显示已登录!!!

:) 有意思... 在一个浏览器中 登录两次吧! --------------------编程问答-------------------- IE8 +中点主菜单>文件>新建会话 再打开一个登陆页面,此时两个页面中的Session就隔离开了
这个的确跟IE7+以上打开页面时是否是新开一个进程有点关系,开标签页多数都是在同一进程中 --------------------编程问答-------------------- 这个没办法  如果你使用两个不同的浏览器  比如Firefox和IE就不会有这个问题


原因:  IIS里面对Session的辨别是通过客户端浏览器版本鉴定和生成SessionID的 --------------------编程问答-------------------- 测试两个进程的sessionid, 用chrome测试.
由于session在没有写之前一直是变化的,这个时候测试值不准,所以用登录测试.

打开两个chrome 窗口(非选项卡)

网站登录模式(cookies+session);

在其中一个窗口登录. 另一个窗口会自动登录. cookies是共享的.

直接查看了下两个窗口上保存的asp.net_sessionid. 发现是一样的? 

开两个chrome应该是独立的进程吧. 怎么sessionid一样.

--------------------编程问答-------------------- 登录进去看到的登录名应该是不同的吧,把名字赋给一个文本框,添加数据到数据库时取文本框里的作者,可以实现在同一浏览器中用不同用户,提交数据显示不乱位。 --------------------编程问答--------------------
引用 27 楼 sp1234 的回复:
可以确定,在你的桌面上打开同一个浏览器程序的不同进程,其Session肯定是不同的!

学习 --------------------编程问答-------------------- 也学习一下了!谢啦! --------------------编程问答--------------------
引用 37 楼 kkbac 的回复:
测试两个进程的sessionid, 用chrome测试.
由于session在没有写之前一直是变化的,这个时候测试值不准,所以用登录测试.

打开两个chrome 窗口(非选项卡)

chrome是一个看起来很“混乱”的、抢占内存的服务应用。当你打开一个窗口时,你会发现一下在增加了好几个进程。当你打开第二个窗口时,并没有增加进程。当你一个一个进程删除时,你会发现两个窗口其实是在你关闭同一个进程时才消失的! --------------------编程问答-------------------- 想在一个桌面上模拟两个浏览器用户进行测试,做到(内存中的)cookie分隔,那么就不要使用chrome浏览器。 --------------------编程问答-------------------- 汗,看来还是要用ie测试下. --------------------编程问答-------------------- 同样条件, ie9测试结果, 打开新窗口用File - New Session  的模式, 测试两个窗口asp.net_sessionid值不同. cookies值还是可以共享的.

唉. 被chrome忽悠了一次. --------------------编程问答-------------------- 顶p哥. 普通的cookies是共享的. sessionid的cookies(内存中)是不同的.  --------------------编程问答-------------------- fgrewgersgergerg --------------------编程问答-------------------- 学习下,,,,,,, --------------------编程问答-------------------- 用COOKIES吧  就不会了 --------------------编程问答-------------------- xuexi --------------------编程问答-------------------- 学习一下............ --------------------编程问答-------------------- 来学习,顶一下。 --------------------编程问答-------------------- 学习下,,,,,,, --------------------编程问答-------------------- 开两个浏览器,同一个浏览器不行

引用楼主 chenjianyong94 的回复:
同一台电脑上打开2个登录页面,用2个账号登录后,session 会乱窜。


比如:第一个账号登录后,再用第二个账号登陆后,我用第一个账号 添加数据,显示的添加者是 第二个登录用户。

后登录的用户名直接覆盖了前一个的。。打印session["用户名"]出来的是第二个的用户名。。。


求高手解答!!!!


我想让2个session不要乱。。。各管各的。。。。
--------------------编程问答-------------------- 同一个浏览器是不行的 --------------------编程问答-------------------- 以前也遇到這種問題,目前看來沒好的解決方法 --------------------编程问答-------------------- 是session更新,只保留最新的session值,如果同一浏览器,先判定是否有登录,如果有创建session 时更名,就不会更新了。 --------------------编程问答-------------------- 这个问题存在多年了,很正常,同一个浏览器登录同一个网站,如果有两个用户,并且存储方式session没用禁用cookie就会有空上情况,后一用户,替换前一用户,session给值时,由于第一次登录用户并没有登出,所以第二个用户登录值覆盖第一个

解决方法
1.同一浏览器对同一网站登录做判断,只允许有一个用户,
2.禁用cookie,sessionid通过url参数传递
3.登录时将用户名存储文本文件,然后登录时对文本文件做判断,查看是否存在已登录用户,如果有友好提示,登出用户,或是关闭先前用户,
--------------------编程问答-------------------- 可以用多个浏览器试试 --------------------编程问答-------------------- 破题,领分 --------------------编程问答-------------------- 学习中 --------------------编程问答-------------------- 同意57楼 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用 3 楼 qingyun1029 的回复:
那你就判断是否登陆啊!

不给第二个页面登陆机会。。
+1 --------------------编程问答-------------------- 分别用两个浏览器,一个IE,一个chrome或firefox --------------------编程问答-------------------- 没有试过这样测试 学习 --------------------编程问答-------------------- 记录时可以试试同时记录sessionID,配合session账户名联合验证,避免重名操作。 --------------------编程问答--------------------
引用 64 楼 slife890809 的回复:
引用 3 楼 qingyun1029 的回复:

那你就判断是否登陆啊!

不给第二个页面登陆机会。。

顶 --------------------编程问答-------------------- 开2个浏览器就行了 --------------------编程问答-------------------- 之前我也遇到过。

------------304F不锈钢棒 http://www.twylbxg.com 台湾烨联不锈钢 --------------------编程问答-------------------- 祝lz好运了。 --------------------编程问答-------------------- mark  --------------------编程问答-------------------- 学习学习 --------------------编程问答-------------------- IE 8及以上中可以在file->new session 中打开登录,能够使用两个session。ie7 及以下都没有办法。其他浏览器不确定。 --------------------编程问答--------------------
引用 4 楼 truecoffeefox 的回复:
两个不同的浏览器,一个浏览器似乎没法解决
这也不叫乱窜啊,不可能首先登陆的来吧后登陆的覆盖吧

对,同一个浏览器会出现这样情况,QQ空间是最好的例子。
QQ到目前也没解决,要么感觉这不是问题,要么就是没办法。 --------------------编程问答--------------------
这个问题,和浏览器内核有关。
窗口模式有这个问题,有些重启页面的浏览器就没这个问题。 --------------------编程问答-------------------- 不行的。一个浏览器下同一域名不能覆盖。 --------------------编程问答-------------------- Session :会话 楼主是说这个不?
会不会是游览网页兼容的问题呢?
没有遇到过,学习了 --------------------编程问答-------------------- 这是与浏览器有关的。目前各种最新的浏览器都是Session共享的。用同一个浏览器打开同样一个网站,第二个Session会将第一个Session覆盖。最合理的做法是,使用两个不同的浏览器,一个IE,一个Chrome.个人认为Safari最卡,Chrome最快,其次是Opera,然后是FF(FF的启动最慢,运行挺快),然后IE,主流就是这几个了。 --------------------编程问答-------------------- 这是浏览器本地解决的事情 我晕

操作系统登陆多个用户基本都1个当前实际使用 其他的都挂起 何况是网站程序 除非你一上来就设计成可以多账号登陆的。这倒是可以做到的 --------------------编程问答-------------------- 其实通过设计可以让session默认就支持多用户登陆的  当然在提交很多东西的时候都要顺便提交当前页面的用户信息了 阿哈哈哈  很不符合主流的web逻辑 --------------------编程问答-------------------- 期待解决中.... --------------------编程问答-------------------- 学习啊啊 --------------------编程问答-------------------- 竟然有这种问题。。。。。。 --------------------编程问答-------------------- 不错  不错 ····都是牛逼人物 啊··· --------------------编程问答-------------------- 还有这事情发生? --------------------编程问答-------------------- 我以前用2个QQ号登陆空间,我说怎么里面显示的用户名怎么不对。原来是这个原因,学习了。 --------------------编程问答-------------------- 同一个浏览器的sessionid一样,后者覆盖前者 --------------------编程问答-------------------- DDDDD --------------------编程问答-------------------- 学习中 --------------------编程问答-------------------- 如果是session应该是不可能的,session就是限制这个的,你还就不想这样,那你就别用session啊,想 --------------------编程问答--------------------
引用 48 楼 kidong 的回复:
用COOKIES吧 就不会了


cookies 也有只有持久型的(在硬盘生成文件的) 才能跨浏览器进程

非持久型 的 cookies 跟 session 的区别就是 一个在服务器端一个在客户端


--------------------编程问答-------------------- 用url传输session ID, 同时记得encode session ID --------------------编程问答--------------------
引用 13 楼 sp1234 的回复:
引用楼主 chenjianyong94 的回复:
同一台电脑上打开2个登录页面,用2个账号登录后,

你怎样打开的?

打开两个登陆界面  只是界面 还未登陆~  这时候登陆第一个账号 无异常 
这时候切换到第二个登陆界面 登陆第二个账号 之后 你的第一个账号的session肯定就没用了  第二个的账号的session生效啊 --------------------编程问答-------------------- 加个判断就行了,实际意义不大 --------------------编程问答-------------------- 我的回答在哪里 --------------------编程问答-------------------- 我是来学习的。。。 --------------------编程问答-------------------- 同一浏览器肯定会出现这个问题. --------------------编程问答--------------------  一个浏览器2个用户名登录 当然会后者替换前者的session .  --------------------编程问答-------------------- 学习了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,