大家都知道,当用户登录后,需要把用户信息保存到session中,便于确保用户操作权限,在其它页面通过检查session是否为null可以知道用户是否登录。
    我现在的问题是,session在一个浏览器中有效,如果用户另外打开一个IE访问网页时,该页面中的session为null,则用户本来已经登录了,但是在新打开的浏览器中需要重新登录,这样不好吧!
我看现在大多网站登录后,在新打开的浏览器中显示用户已登录,他们是怎么处理的呢??
    难道是获取用户登录后保存在session中的信息,可是不知道怎么获取到??
请大侠帮忙,本人不胜感激!!在线等你答复~

解决方案 »

  1.   

    在Global.asax.cs文件中
    在Session_Start事件下定义一个Session如下:
    protected void Session_Start(Object sender, EventArgs e)
    {
    Application.Lock();
    Session["logined"]=false;
    Session["userName"]=null;
    Application.UnLock(); }然后在每个页面里的page_load事件中都对Session["logined"]进行检查...
    当然如果登录成功,则要将Session["logined"]设为True...
    楼主尝试下看...
      

  2.   

    什么叫session?你再开另外一个IE窗口就是另外一个session了,怎么可能还取得到呢。所以别的网站肯定用的其他的方法,比如在把usertoken也就是你所说的用户信息存放在cookie中,也有可能在数据库中标识用户的最后登陆IP和登陆状态,这都有可能,但是肯定不是用的session.
      

  3.   

    session的主要目的是记录用户登录的基本信息,他重新登录了,你只需要把它曾经Session中记录的信息写到你新的Session中来就可以了。并不是把原来的Session获得。你可以这样做,当用户登录时,先判断当前用户是否已经登陆,如果已经登录就把原来的session设置为失效,将现在的session设置为最新的。这样应该就可以达到你的目的了。
      

  4.   

    我也知道不是用的session,可是到底他们怎么处理的?
    如果在数据库保存ip的话,我试过了,虽然可以实现在打开不同ie窗口时从数据库中查到该ip的用户已登录,但这样又出现一个问题,局域网内部的电脑都是一个ip,这样的话不用登录的范围扩大了,ip地址一样的机器都不用在登录了,保存ip是不行的!
    到底怎么处理呢?
      

  5.   

    houlinghouling(秋水伊)没有明白我的意思,
    我是想用一种方法实现用户在一个浏览器中登录后的信息,在打开新的浏览器访问网页时仍然有效,这样我的网页自动显示该用户已登录。
      

  6.   

    liujia_0421() 的方法看着好像可以呀,我用用试试!
      

  7.   

    liujia_0421() 的方法不行啊,当我打开新浏览器网页时,Session_Start重新执行,Session["logined"]=false;
      

  8.   

    呵呵,恕我无知,小声问个问题,我没用过cookie,是不是cookie在打开不同浏览器中都能获取到呢??
      

  9.   

    唉,那我已经用了session保存的登录信息,难道非要换成cookie不成?
      

  10.   

    嗯,开始我没有理解楼主的意思,你的要求用我的这个方法确实实现不了...
    似乎cookie可以,但我也没有用过,一起学习下...
    呵呵...
      

  11.   

    cookie在donet中不比session复杂,稍微看一下文档就会了,cookie是保存在本机的域名相关的临时文件,里面保存的也是key=value这样的多组数值,你在保存时可以设置失效时间.当你请求某一域名网站是,浏览器会检查你本地是否有这个域名相关的cookie如果有的话,就会把其中的值和httpheader一起发送到server,你在server上用request.cookie["key"]就可以取到。
    最后强调cookie是域名相关的,http://www.mysite.com,http://localhost可能都指向127.0.0.1但是他们是两个不同的域名,其中一个的cookie用另外一个域名访问站点时并不会发送,注意这一点。
      

  12.   

    我在网上咋没查到这方面问题的解决方案啊,似乎大家都没遇到过?
    还是这问题太简单了,就我不知道怎么处理呀?
    因为没有经验,在处理问题时老是走弯路,我刚开始是在用户登录后,把用户ip及登录状态记录到数据库,这样,在打开新浏览器访问时虽然不能用session,但是我可以从数据库中查到该用户ip已登录过了,这样能够基本实现。
    但发现一台机器不能用ip地址唯一标识,这样处理将出现局域网内部所有机器访问时将都显示某一用户的登录名,显然是个大BUG!
    baidu实在是查不到这方面的资料,所以在这里求助大家!
      

  13.   

    http://www.microsoft.com/china/MSDN/library/archives/library/dv_vstechart/html/vbtchaspnetcookies101.asp
      

  14.   

    copine() 讲的不错,本人收获颇多!
    看来cookie用起来还是挺方便的,不防考虑放弃session了。
    难道哪些网站都是用的cookie吗?
      

  15.   

    谢谢copine(),我会多多学习的。要是session也是域名相关的话,该多好啊!
    没想到session还有这种限制。
      

  16.   

    一般都不用session,比如loadbalance怎么办?单点登陆怎么实现?所以放弃session用cookie吧,不过保存敏感信息注意要加密。
      

  17.   

    copine()英文也不错!不一般的高手哪!
      

  18.   

    写在cookie里面啊,就像csdn或者discuz也都是写的cookie
      

  19.   

    SESSION 和  COOKIE 都是有好有坏的。。如果用户禁用COOKIE了呢?(当然这个是少数)
      

  20.   

    Session是做不到的,肯定是用Cookie实现的。
      

  21.   

    建议楼主弄清session的作用范围
      

  22.   

    IE里,session的作用范围是
    1、本窗口
    2、所有通过点击本窗口链接打开的新窗口
    3、在本窗口通过Ctrl+N新建的窗口
    所有登陆之后,另外单独打开的IE里,session是不生效的
    Maxthon等多tab浏览器里,session的作用范围是整个浏览器。你可以尝试看看163的通行证就知道了,登陆之后,再开的ie是不记录session的
      

  23.   

    用cookie吧.把用户信息保存在cookie中.