我听说:当在浏览器地址栏中输入一个网址访问某个网站时,被访问的网站服务器就会为你这次访问产生一个SessionID。这句话我有几个疑问,请大家帮忙解决,谢谢!!!
1:SessionID是根据什么产生的,是客户端的IP地址还是???
2:访问网站的任何网页面产生的SessionID相同吗?(比如说CSDN的首页和下载页。)
3:如何防止用户重复登录?对于问题3.我做了如下测试:新建网站,网站有两个网页——login.aspx是登录页面,登陆后跳转到target.aspx页面。
target.aspx.cs下有
protected void Page_Load(object sender, EventArgs e)
{
    Response.Write(Session.SessionID.ToString());//显示SessionID值
}
我在vs中浏览login.aspx(记下此时的url地址),登录跳转到target.aspx页面,页面显示SessionID值。
此时,我又开浏览器,用上面记下的url地址访问login.aspx页面,同样跳转到target.aspx页,但是此时的SessionID和上次显示的不一样???(如何防止重复登录?)请高手指点,或者推荐相关网址也可。
谢谢!!!

解决方案 »

  1.   

    登录后保存登录用户在session中,在pageload里面判断session是否存在来防止重复登陆
      

  2.   

    SessionID就是个随机生成内容的字符串,例如 2834923_iofasdfk_adr09q3r 这就是一种(当然asp.net所产生的串的格式更像是Guid字符串而我手写这个不像)。SessionID其实就是一个cookie数据——小点心。
      

  3.   

    Sessionid,SessionID 属性返回用户的会话标识。
    在创建会话时,服务器会为每一个会话生成一个单独的标识
    默认情况下Session是根据cookie里的sessionid来保持的,如果没有写cookie,那每次刷新页面它就认为是新的session了
      

  4.   


    没有打开的cookie的用户如何处理? 不要求强制登录访问
      

  5.   

    1:SessionID是根据什么产生的,是客户端的IP地址还是???
    ==
    服务器给客户端创建的唯一id2:访问网站的任何网页面产生的SessionID相同吗?(比如说CSDN的首页和下载页。)
    ==
    当用户登录后(如果网站使用了Session),对同一用户而言SessionID相同3:如何防止用户重复登录?
    ==
    SessionID默认是和浏览器同一进程的,关闭浏览器后再开浏览器,两次SessionID不同
      

  6.   


    这时session还没消失,在登录代码里里判断一下是否存在即可
      

  7.   

    如果用户不关闭浏览器,关了cookie,不断登录, 这个我也想知道怎么处理。
      

  8.   

    完了,csdn用两个浏览器同一个用户都可以进,这样能饶恕吗???并且一个号可以到处登陆!!!
      

  9.   


    同一台机? 可能是同一个session_id吧
      

  10.   


    9成没有这个可能,不管是B/S还是C/S,服务器都得考虑这个用户有没有登录,那是服务器的工作,不可能交给客户端。
      

  11.   


    那这样Session只能用来传值了?
    单点登录刚才看了一下,好像有点复杂。以后再来攻克!!!
      

  12.   

    b/s和c/s相差很大的, b/s不能控制用户端信息,
      

  13.   

    csdn有个叫ASP.NET_SessionId保存在客户端,你退出浏览器就过期了,但这解决不了问题
      

  14.   

    b/s程序没有权限操作用户端的文件么???
    c/s可以?那c/s岂不是很恐怖。
    不过c/s确实恐怖,可以“爆头”嘛!!!
    嘿嘿!
      

  15.   


    是asp.net吧???呵呵!
    但是我没有退出浏览器啊,我只是重新开了一个,并且一个是ie,一个firefox。
      

  16.   


    b/s传播病毒,c/s执行病毒。 前者不一定爆头,后者一定爆头
      

  17.   


    生成两个也正常,反正它们cookie都放在不同的文件夹,不会冲突,浏览器之间也通不了气,但在同一个浏览器里就不能同时登录了。
      

  18.   

    听说过什么叫cookieless session么??同一个浏览器的不同tag,其实是共享一个session的多点登陆,对你现在水平来说不是那么容易,把基础打牢再说吧。
      

  19.   

    强大的ssesion!
    还是B/S好啊!
      

  20.   


    asp.net只有在你实际使用到了Session集合时才会向客户端真正写出标记SessionID的cookie。例如你随便写一行if(!IsPostback)
        Session["aaa"]=true;胡乱写的,仅仅需要在第一次访问服务器时使用一次Session集合,你就会发现SessionID不再变化了。
      

  21.   

    仅仅需要在第一次访问服务器时使用一次Session集合,你就会发现SessionID不再变化了。----
    这机制都能摸出来膜拜。。
      

  22.   

    防止重复登录的实现思路: 
    1. 用户登录成功后,将用户登录信息存放到Hashtable类型的Application["users"]里面,其键值为SessionID,其Value值为用户ID;
    2. 当用户注销时,调用Session.Abandon;
    3. 在Global.asax里面的SessionEnd事件中,将用户ID从Hashtable中删除;在用户访问页面时,察看Hashtable中是否有对应的用户ID如果没有则判断用户不在线(用户不在线的原因可能是按了注销按钮、网页超时等) 
    1. 公用类中判断用户是否在线的函数(供用户调用)
    2. 处理用户登录事件,在里面调用判断用户是否登录的函数,并将相关信息保存到Session中去,在将Seesion保存到Application中去。
    3. 接着就需要在Session销毁或者浏览器关闭的时候,进行处理Session中的数据,也就是将数据从Session中移除。
    4. 而最后就是在页面刷新的时候进行判断就可以了。
      

  23.   

    1.session ID是由服务器随机产生的(如果由客户端产生,就有可能重复),Session ID产生后,会在客户端保存(如cookie或 url特殊字符串).浏览器每次提交HTTP请求时,会发给服务器.2.如果新的页面都是从上一个页面产生的,如点击链接/跳转,则session ID会继承,也就是同一个3.如果重新打开一个游览器访问同一个URL,session ID也会不同的.如果你用session保存登录状态,那么即便已登录,重新打开浏览器访问某个需要登录的URL,也会要求"登录"如果你不想这样,你可以用cookie来保存用户登录信息.session并不适合保存用户登录,session不稳定,很容易丢失.大量用户登录时,也会消耗不少的服务器资源.
      

  24.   

    感觉服务器会根据ip和浏览器线程综合起来创建session的id,这样就可以区分了,当在同一个浏览器中在开一个标签的时候会是另一个session了不知道对不对,猜的
      

  25.   

        void Session_Start(object sender, EventArgs e) 
        {    }    void Session_End(object sender, EventArgs e) 
        {    }
    个人想法是在数据库中弄个记录用户是否登录的字段,在Session_Start事件里面UPdate用户状态为登录,在Session_End里面UPdate用户状态为离线。用户没每次登陆的时候都先判断下他的状态时不是登录中、、个人浅见,不知道有没有用,楼主仅供参考。
           
      

  26.   

    1:SessionID是根据什么产生的,是客户端的IP地址还是???听说是随机的。
    2:访问网站的任何网页面产生的SessionID相同吗?(比如说CSDN的首页和下载页。)SessionID是在临时Cookie里保存着,浏览器关闭时释放Cookie,Session在服务器端等超时了以后自动释放一个会话就一个Session。浏览器打开后,只要两次操作在Session的生存周期内,并且是同一个站点,系统默认的就是一个Session(除非你程序释放),CSDN首页和下载站里,如果他们是完全独立的两个服务器,将会是不同的Session,因为Session在服务器内存里存着,
    3:如何防止用户重复登录?
    你可以在Application里用用户名建一个标识,不过你得想法解决关闭浏览器,或断电后注销用户的问题
      

  27.   

    Sessionid,SessionID 属性返回用户的会话标识。
      

  28.   

    同一台机器使用两种不同浏览器(如ie\firefox)同时登陆同一b/s应用(一般是网站),session是不一样的,不同机器更是不一样。