zoukankan      html  css  js  c++  java
  • 登录操作中的记住密码操作的算法逻辑

    登录操作中的记住密码操作的算法逻辑

    一、登录界面如何实现记住用户名和密码 且实现自动登录

    最近在一次练习中遇到了一个问题,如何在登录界面实现记住用户名和密码,并且可以进行勾选是否自动登录。

    首先,给大家看下我的登陆界面。

    很显然,我布置了checkbox,一个用于记住密码,一个用于自动登录。

     
    1. <label>  
    2. <input type="checkbox" name="autoLogin" id = "autoLogin"> 自动登录  
    3. </label>  
    1. <label>  
    2. <input type="checkbox" name="rememberMe" id = "rememberMe"> 记住密码  
    3. </label>  

    接下来就是如何对这两个按钮进行触发操作了,我主要是利用了jquery.cookie.js来进行的操作。这个需要自己去下载,然后引进。

     
    1. //记住用户名密码  
    2.         function Save() {  
    3.             if ($("#rememberMe").prop("checked")) {  
    4.                 var str_username = $("#NameText").val();//用户名  
    5.                 var str_password = $("#inputPassword").val();//密码  
    6.                 $.cookie("rmbUser", "true", { expires: 7 }); //存储一个带7天期限的cookie  
    7.                 $.cookie("username", str_username, { expires: 7 });  
    8.                 $.cookie("password", str_password, { expires: 7 });  
    9.             }  
    10.             else {  
    11.                 $.cookie("rmbUser", "false", { expire: -1 });  
    12.                 $.cookie("username", "", { expires: -1 });  
    13.                 $.cookie("password", "", { expires: -1 });  
    14.             }  
    15.   
    16.             if ($("#autoLogin").prop("checked")) {  
    17.                 var str_username = $("#NameText").val();  
    18.                 var str_password = $("#inputPassword").val();  
    19.                 $.cookie("auto", "true", { expires: 7 }); //存储一个带7天期限的cookie  
    20.                 $.cookie("username", str_username, { expires: 7 });  
    21.                 $.cookie("password", str_password, { expires: 7 });  
    22.             }  
    23.             else {  
    24.                 $.cookie("auto", "false", { expire: -1 });  
    25.                 $.cookie("username", "", { expires: -1 });  
    26.                 $.cookie("password", "", { expires: -1 });  
    27.             }  
    28.         };  


    通过上面代码的操作就可以进行判断,是否勾选了记住密码和自动登录的按钮,然后便将这个记录到cookie中,cookie的寿命为7天,关于如何触发这个save:在button上设置一个onclick,调用save函数,便可以在实现登陆的时候触发。

    这样便把用户的相关信息存入了浏览器中,接下来就是如何在下一次点开登陆界面的时候自动填充数据。


    1. $(document).ready(function () {  

    1. $("#autoLogin").change(function() {  
    2.     if($("#autoLogin").prop("checked")){  
    3.         $.cookie("auto", "true", { expires: 7 });  
    4.     }else{  
    5.         $.cookie("auto", "false", { expires: 7 });  
    6.     }  
    7. });  
    8.   
    9. if ($.cookie("rmbUser") == "true") {  
    10.     $("#rememberMe").attr("checked", true);  
    11.     $("#NameText").val($.cookie("username"));  
    12.     $("#inputPassword").val($.cookie("password"));  
    13. }  
    14.   
    15. if ($.cookie("auto") == "true") {  
    16.     setTimeout(function(){  
    17.         if($.cookie("auto") == "true")  
    18.         window.location.href='下一个界面';  
    19.     },5000);  
    20. }  

    首先在页面加载的一开始我便进行了判断,如果cookie中记录了记住我和自动登录,那么便自动填充数据,我在下面嗨加入了一些判断,如果是自动登录,用户会等待五秒钟,若是在等待过程中用户取消了勾选自动登录,那么监听器便接收到,从而改变状态,不会进入下一个界面。

    这只是写的一个简单的记住密码和自动登陆,与后台数据库进行交互,进而判断的部分没有进行展示。

    二、使用Cookie记住用户名和密码并自动登陆

    很多时候我们在登陆一个网站的时候,输入用户名和密码下面都有一个记住我的功能选项,在不知道怎做的情况下,感觉非常头疼,其实很容易的,接下来就给大家介绍一下怎么实现此功能。

    1、思路、用到的知识点。

       1.1、首先分析用到的知识点有哪些?

        用到的知识点是Cookie,Cookie是客户端的一种保存机制。Cookie的取值方式是通过键取值,你也可以通过Expires属性为其指定过期时间。

       1.2、其次什么时候创建Cookie呢?

        那就是在你校验好用户名和密码都正确以后就创建Cookie,为其键名赋值。

    2、下面有两个方法,分别是UserLogin和SetCookie,UserLogin方法是用于校验用户输入的用户名和密码、当用户名和密码都正确的情况下,就调用SetCookie方法创建Cookie。

     1 /// <summary>
     2 /// 用户登录。
     3 /// </summary>
     4 /// <param name="_userName">用户名。</param>
     5 /// <param name="_password">密码。</param>
     6 private void UserLogin(string _userName, string _password)
     7 {       
     8     //在这里是通过用户名得到一个对象。    
     9     Model.UserInfo userInfo = userInfoBll.GetUserInfo(_userName);
    10     if (userInfo != null)
    11     {
    12         if (userInfo.UserPassword.Equals(_password))
    13         {
    14             //如果用户名和密码都正确了,就调用SetCookie方法为其创建Cookie。
    15             //在这里密码我没有加密,你可别忘了加密啊。
    16             SetCookie(userInfo);
    17             //为Session赋值。
    18             Session["UserInfo"] = userInfo;
    19             //页面跳转。            
    20             Response.Redirect("/Member/Default.aspx");
    21         }
    22         else
    23         {
    24             ShowMsgInfo = "用户名或密码错误";
    25             return;
    26         }
    27     }
    28     else
    29     {
    30         ShowMsgInfo = "用户名不存在";
    31         return;
    32     }
    33 }
    34 
    35 /// <summary>
    36 /// 设置Cookie。
    37 /// </summary>
    38 /// <param name="userInfo">传过来一个userInfo对象,得到对象里的用户名和密码</param>
    39 private void SetCookie(UserInfo userInfo)
    40 {
    41     //创建cookie1,为其指定键名是userName,值是输入的用户名。
    42     HttpCookie cookie1 = new HttpCookie("userName", userInfo.UserName);
    43     //创建cookie1,为其指定键名是userName,值是输入密码。
    44     HttpCookie cookie2 = new HttpCookie("userPassword", userInfo.UserPassword);
    45     //指定过期为7天。
    46     cookie1.Expires = DateTime.Now.AddDays(7);
    47     cookie2.Expires = DateTime.Now.AddDays(7);
    48     //将创建的Cookie输出到客户端。
    49     Response.Cookies.Add(cookie1);
    50     Response.Cookies.Add(cookie2);
    51 }

     3、下面当我们在浏览器地址栏中输入:http://localhost:8090/Member/Login.aspx(这个是我自己的页面,你输入的地址应该和我的不一样哦)的时候,这个时候会请求Login.aspx页

      面,第一次会执行get请求然后就会判断Cookie中是否有值,然后根据拿到的值去校验,如果校验成功,那么就跳转页面,如果校验失败就将Cookie设置为过期。  

     1 protected void Page_Load(object sender, EventArgs e)
     2 {
     3     //如果是Post请求。
     4     if (IsPostBack)
     5     {
     6         string userName = Request.Form["txtName"];
     7         string userPassword = Request.Form["txtPassword"];
     8         string validateCode = Request.Form["txtValidateCode"];
     9         if (Session["ValidateCode"].Equals(validateCode))
    10         {
    11             UserLogin(userName, userPassword);
    12         }
    13         else
    14         {
    15             ShowMsgInfo = "验证码错误";
    16             return;
    17         }
    18     }
    19     else  //get请求。
    20     {
    21         //校验Cookie中的值。
    22         if (Request.Cookies["userName"] != null && Request.Cookies["userPassword"] != null)
    23         {
    24             //得到Cookie中存储的用户名。
    25             string userName = Request.Cookies["userName"].Value.ToString();
    26             //得到Cookie中存储的密码。
    27             string userPassword = Request.Cookies["userPassword"].Value.ToString();
    28             //校验用户名,得到一个对象。
    29             Model.UserInfo userInfo = userInfoBll.GetUserInfo(userName);
    30             //!=null说明数据库里有此用户。
    31             if (userInfo != null)
    32             {
    33                 //如果得到的对象中的方法等于Cookie中存储的数据。
    34                 if (userInfo.UserPassword == userPassword)
    35                 {    
    36                     //跳转。跳转以后就不会执行下面的Cookie过期代码了。
    37                     Response.Redirect("/Member/Default.aspx");
    38                 }
    39             }
    40             //如果登陆失败,就为Cookie设置为过期。
    41             Response.Cookies["userName"].Expires = DateTime.Now.AddDays(-1);
    42             Response.Cookies["userPassword"].Expires = DateTime.Now.AddDays(-1);
    43         }
    44     }
    45 } 

    End。

  • 相关阅读:
    php极光网络一键登录(yii框架)
    Sublime Text3将多行转为为一行 | Sublime Text 快速分别独立选中多行
    mysql 将时间戳转换成日期格式
    Vant主题定制修改颜色样式
    TypeError: this.getOptions is not a function 引入less一直报错
    export defaul 和 export定义和区别
    Vue vant引入,tabbar封装使用示例
    php去除富文本编辑器中的内容格式
    ES6:高级数组函数,filter/map/reduce
    [BZOJ2793][Poi2012]Vouchers
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/8874401.html
Copyright © 2011-2022 走看看