ASP.NET 使用cookie完成自动登录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mabanana/article/details/85161025

1.简单理解
cookie是保存在客户端的用户信息,在浏览器首次访问服务器时由服务器创建并发给客户端。浏览器收到cookie后会根据cookie时效,选择将cookie内容保存在内存或硬盘。当浏览器再次访问服务器时会在请求中携带cookie。

目的:追踪用户会话,标识用户,让服务器知道是谁在访问网站。


2.使用

有很多web程序中第一次登录后,在一定时间内再次访问同一web程序时就无需点击登陆按钮,而是直接进入程序的主界面(仅限于本机)。实现这个功能的关键就是服务端要识别客户的身份。而用cookie是最简单的验证方式。


3.举例
用户在第一次点击登录的时候,可以将用户名和密码作为cookie写到本地,代码如下:

protected void Button1_Click(object sender, EventArgs e)
{
    string username = this.txtUserName.Text;//用户名
    string password = this.txtPassword.Text;//密码

    if (UserManager.LoginValidate(username, password) && this.ckState.Checked == true)//判断登录名和密码是否正确和是否选择了记住用户名和密码的复选框
    {
        //判断客户端浏览器是否存在该Cookie 存在就先清除

        if (Request.Cookies["username"] != null && Request.Cookies["password"] != null)
        {
            Response.Cookies["userName"].Expires=System.DateTime.Now.AddSeconds(-1);
            //Expires过期时间
            Response.Cookies["password"].Expires =System.DateTime.Now.AddSeconds(-1);
        }
        else
        {
              //向客户端浏览器加入Cookie (用户名和密码 最好是使用MD5加密)
              HttpCookie hcUserName1 = new HttpCookie("username");
              hcUserName1.Expires = System.DateTime.Now.AddDays(7);
              hcUserName1.Value = username;
              HttpCookie hcPassword1 = new HttpCookie("password");
              hcPassword1.Expires = System.DateTime.Now.AddDays(7);
              hcPassword1.Value = password;
              Response.Cookies.Add(hcUserName1);
              Response.Cookies.Add(hcPassword1);
         }
    }
}


第一次点击登录之后,就存在了cookie,那么再次登录的时候就会去对cookie的信息进行验证,验证代码如下:

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Cookies["username"] != null && Request.Cookies["password"] != null)
    {
    //用户曾登录 
    username = Request.Cookies["username"].Value.ToString();  //读取Cookie 
    password = Request.Cookies["password"].Value.ToString();//判断Cookie读取出来的用户名和密码是否能正确登录
    //进行用cookie的数据进行自动登录操作
    if (UserManager.LoginValidate(username, password))
    {
    
        //登录的一些代码,比如到那个窗体之类的,还可以做一些
    
    }
}

如果点击退出之后,那么cookie中的信息就会清空,等待下一次点击自动登录。

//退出
protected void Button2_Click(object sender, EventArgs e)
{
    HttpCookie hcUserName1 = new HttpCookie("username");
    hcUserName1.Expires = System.DateTime.Now.AddDays(-7);
    hcUserName1.Value = username;
    HttpCookie hcPassword1 = new HttpCookie("password");
    hcPassword1.Expires = System.DateTime.Now.AddDays(-7);
    hcPassword1.Value = password;
    Response.Cookies.Add(hcUserName1);
    Response.Cookies.Add(hcPassword1);
}


4.Dammmmmmmn

猜你喜欢

转载自blog.csdn.net/Mabanana/article/details/85161025