我在同一台电脑上分别用不同身份登录,各自打开同样的页面,那Session的名称肯定是相同的,如何区分两个不同用户的Session呢?测试的时候,我先登录了一个用户,然后再登陆一个用户,之前那个用户的所有操作就都变成最后登录的那个用户所操作的了……请问一下各位高人有何好计区分开来呢?拜谢……

解决方案 »

  1.   

    怎么没人回答呢?是不是大家都遇到这样的问题?或者不用session有没有其它什么办法保存值?
      

  2.   

    sessionID 是标记你的 ,是从服务器获得
      

  3.   

    这个,session是Web服务器自动创建的,基本上我们是无法控制的。
    如果你服务器端不想办法(比如建一组会话,用传参的方式区分),在客户端保持多个会话,要看你用的浏览器了。。
    火狐傲游就算了,无论怎样Session都会串(或许我很少用,不知道是否可以同时保持多个session)。
    IE6/IE7比较复杂,大部分情况下是会串的,要用另一个跟前一窗口没有任何关系的新窗口来创建新session,IE7的多个标签页之间100%是同一Session,这个就不用想了。
    IE8这方面比较贴心,在“文件”菜单下有个“新建会话”命令。这是个很好用的命令,能打开一个不含任何会话信息的新窗口。我玩某WebGame就用这一招多开
    IE8除了用“新建会话”命令之外,无论是新窗口还是新标签页,都会延续以前的会话,如果你在新窗口中退出登录(服务器端Session.Abandon()或者Session.Clear()了),你的其它窗口的会话也会结束。。
    另外有个InPrivate,是IE8的新功能没啥了解,看它字面上的意思应该可以让各Session间独立工作互不影响
      

  4.   

    cookie 但是不安全,是存在客户端得,session则存在服务器端
      

  5.   

    貌似腾讯的网站都是用SESSION做的
    所以它就只认一个账号登录
      

  6.   

    信息不放session,序列化后放数据库,每份信息和每个登录帐号相关,按帐号写和读信息[Serializable]
    class SessionInfo
    {
      各种操作有关用到的变量
    }AccountID SessionInfo
    1          序列化后的二进制信息    
    2          序列化后的二进制信息 
    3          序列化后的二进制信息
      

  7.   

    或者用session的sqlserver模式,
    其实2个用户的session本来就不一样了,不用自己区分,页面里就直接处理session就可以了,不清楚你的意思,
      

  8.   

    就是登陆成功后 Session["username"] = TextBox1.Text;//textbox1.text="user1"
    然后这时候用IE6再登陆一个用户 Session["username"] = TextBox1.Text;//textbox1.text="user2"
    那么在第一个登陆的页面上面所进行的增删改操作所记录的操作人都变成了最后登录的user2了
      

  9.   

    在注册的时候就分配一个sessionid进库里面,然后登陆的时候调用库里面的uer相对应的sessionid为session这样不就可以了么
      

  10.   

    看来是用sessionid误导你了,不好意思哈。其实很简单的,你数据库不是有个注册登陆表么,表里面一般至少都有编号,用户名,跟密码吧。这样每个用户名的编号一定不一样吧,把这个编号在登陆界面那里提取出来放进session。就是登陆成功的话那这个用户名的session就是它相对应的编号了。我个人是这么做的。
      

  11.   

    支持楼上,用户名不同的话,直接Session["用户名变量值"]=用户名变量值就行。
      

  12.   

    那么Session["用户名变量值"]又怎么让下个页面事先知道有这个session变量……
      

  13.   

    由于session存在服务端,所以后面登录的账户session会覆盖原先的账户session,导致变成只有后来的账户在线,而原先的账户被迫下线了,解决方法个人觉得可以这样:启用浏览器新会话登录,或者不同内核浏览器登录。另一种方法就是修改程序改用cookies替换session,使用客户端缓存,具体实现就得自己想啦,呵呵,仅提供个思路