我现在登陆一个ASP.NET编写的网站,
然后在C:\Documents and Settings\Administrator\Cookies和C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files下都没有找到这个网站的Cookie文件。
发现这个网站登陆成功后,原来的“用户名 密码 登陆(按钮)”部分变成了“欢迎XX来到XX网站! 注销登陆(超链接)”。我现在进行一下三种操作:
(1)我在IE7中点击“注销登录”超链接,再关闭或新开Tab,再此打开该网站,都显示未登录。
(2)我在IE7中关闭了这个网站的Tab,没有关闭IE。过一会儿再打开该网站,发现显示已经登陆了。
(3)我直接关闭IE,再重启登录该网站,显示未登录。
我知道Session是服务器端创建的,我想问一下服务器端的Session是不是相当于一个数据结构,包含了账号信息(用户名和密码)和SessionID?
但是它是怎么在登录成功后,对客户端同一浏览器进程下次登录这个网站的相关网页进行认证的呢?

解决方案 »

  1.   

    Session对象
    利用Session对象 可以方便记录客户的信息。既使该客户从一个页面跳转到另一个页面,该Session信息仍然存在,客户在该网站的任何一个页面都可以存取Session信息
    注:Session信息是对一个客户的,不同客户的信息用不同的Session对象记载。Session对象由System.Web.SessionState类实现,所属的命名空间System.Web
    重要的属性有
    SessionID、TimeOut
    重要的方法有
    Abandon我们一般利用Session存储登录用户的信息。
    例如:
    我们登录后在Page_Load中
    private void  page_load(object sender,EventArgs e)
    {
    Session["user_name"] = "昀"; 
            Session["age"] = 22;
    }
    如果我们要取出Session中的值
    private void  page_load(object sender,EventArgs e)
    {
    string user_name;
    int age;
    user_name = (string)Session["user_name"];
    age = (int)Session["age"];
    message.Text = user_name + "您好,您的年龄是" + age.ToString(); 
    }Session对象有它的有效期,默认为20分钟。客户端每新打开一个浏览器窗口,就会创建一个Session对象,如果超出20分钟没有和服务器端交互或者关闭了浏览器,则该Session对象就会自动结束。
    修改有效期语法如下:
    Session.Timeout=整数(分钟)
    例如:
    Session.Timeout=90   '将有效期改为90分钟Session对象到期后会自动清除,但到期前可以用Abandon方法强行清除。语法:
    Session.Abandon
    例如:
    Session(“user_name”)= “圆圆”;
    Session.Abandon();
    Response.Write(Session("user_name"));
      

  2.   

    Session.Clear();
    Session.Abandon();
      

  3.   

    客户端第一次访问服务器的时候  服务器会返回一个sessionid给客户端
    客户端下次请求的时候 就会把这个sessionid包含在cookie中, 服务器找到这个sessionid在服务器储存的信息如果当前sessionid已经通过验证  那麽就不用重新登陆  session 在服务器保存的时间是20分钟
    可以通过调用下面方法重写sessionID
    Session.Abandon();
    Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));