c#登錄時保存賬號密碼到cookie


登陸界面有用戶名、密碼輸入框,一個’記住賬號密碼‘的復選框。

1.登錄時,勾選‘記住賬號密碼‘復選框,則會把用戶名密碼保存在客戶端cookie里,保存時間為最大值(直到用戶清除瀏覽器緩存或者取消勾選’記住賬號密碼‘復選框);

2.登錄時,取消勾選‘記住賬號密碼‘復選框,會清除cookie保存的用戶名密碼。

3.登錄時,當修改了用戶名密碼,會判斷cookie保存的值是否與輸入的相同,如果不同,則會修改cookie的值。

4.登錄時,當勾選了‘記住賬號密碼‘復選框,下次打開登錄界面,‘記住賬號密碼‘復選框初始化為選中狀態(這樣用戶就明白用戶名和密碼已經保存在cookie中);否則,是未選中狀態。(同QQ登錄)

 

主要代碼:

一、前端

html:

<body>
    <form name="form1" method="post">
        <label>用戶名</label><input type="text" name="UserName" id="username" />
        <label>密 碼</label><input type="password" name="Password" id="userpass" />
        <input type="button" onclick="f_Login()" name="sm1" class="login_btn" value="登錄" />
        <input id="rd" type="checkbox" name="rd_S" style="margin: 20px 0px 2px 20px" />
        <label style="margin-top: 20px">記住賬號密碼</label>
    </form>
</body>
</html>

 

js、jquery:

<script type="text/javascript">
        var rootPath = '@Url.Content("~/Admin/")';
        var username = '@ViewBag.UserName';
        var password = '@ViewBag.UserPassWord';

        $(document).ready(function () {
            if (username != "") {
                $("#username").attr("value", username);
                $("#userpass").attr("value", password);
                $("#rd").attr("checked", "checked"); //當cookie記錄了賬號密碼,則初始化‘記住賬號密碼’復選框時為勾選狀態
            }
            else {
                $("#rd").removeAttr("checked");
            }
        });

       @*登錄*@
        function f_Login() {
            var IsSaveLoInfo; //標識是否記住賬號密碼
            if ($("#rd").attr("checked")) {
                IsSaveLoInfo = true; 
            }
            LG.ajax({
                url: '@Url.Content("~/Admin/Login/LoginAndRedirect")',
                loading: '正在登陸中...',
                data: { UserName: $("#username").val(), Password: $("#userpass").val(), IsSaveLoInfo: IsSaveLoInfo },
                success: function (result) {
                    if (!result) {
                        LG.showError("登錄失敗,帳號或密碼錯誤!");
                        return false;
                    }
                    location.href = "@Url.Content("~/Admin/Manage/Index")";
                },
                error: function (message) {
                    LG.showError(message);
                }
            });
        }
    </script>

 


二、后台:

[Description("加載登陸頁面")]
 public ActionResult UserLogin()
  {
     //獲取cookie保存的賬號密碼
     string UserNameCookie = CookieHelper.GetCookieValue("UserNameCookie");
     string UserPasswordCookie = CookieHelper.GetCookieValue("UserPasswordCookie");
     ViewBag.UserName = UserNameCookie;
     ViewBag.UserPassWord = UserPasswordCookie;
     return View("Login");
  }

 [Description("login登錄,登錄成功則跳轉")]
  public ActionResult LoginAndRedirect()
   {
      UserRequest request = new UserRequest(HttpContext);
      bool IsSaveLoginInfo = Convert.ToBoolean(HttpContext.Request["IsSaveLoInfo"]); //是否保存登陸賬號密碼          
      string UserNameCookie = CookieHelper.GetCookieValue("UserNameCookie");
      string UserPasswordCookie = CookieHelper.GetCookieValue("UserPasswordCookie");
      //判斷是否把登陸賬號密碼到cookie
      if (IsSaveLoginInfo) 
      {
        if(UserNameCookie != request.UserName )//當輸入的用戶名與cookie保存的不同,修改cookie的
           CookieHelper.SetCookie("UserNameCookie", request.UserName, DateTime.MaxValue);
        if(UserPasswordCookie != request.Password)
           CookieHelper.SetCookie("UserPasswordCookie", request.Password, DateTime.MaxValue);
      }
      else
      {
        CookieHelper.ClearCookie("UserNameCookie");
        CookieHelper.ClearCookie("UserNameCookie");
      }
     ………其他處理代碼……… 
   }

 

 

CookieHelper類:

    /// <summary>
    /// Cookie類
    /// </summary>
    public class CookieHelper
    {
        /// <summary>
        /// 清除指定Cookie
        /// </summary>
        /// <param name="cookiename">cookiename</param>
        public static void ClearCookie(string cookiename)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies[cookiename];
            if (cookie != null)
            {
                cookie.Expires = DateTime.Now.AddYears(-3);
                HttpContext.Current.Response.Cookies.Add(cookie);
            }
        }

        /// <summary>
        /// 獲取指定Cookie值
        /// </summary>
        /// <param name="cookiename">cookiename</param>
        /// <returns></returns>
        public static string GetCookieValue(string cookiename)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies[cookiename];
            string cookievalue = string.Empty;
            if (cookie != null)
            {
                cookievalue = cookie.Value;
            }
            return cookievalue ;
        }

        /// <summary>
        /// 添加一個Cookie
        /// </summary>
        /// <param name="cookiename">cookie名</param>
        /// <param name="cookievalue">cookie值</param>
        /// <param name="expires">過期時間 DateTime</param>
        public static void SetCookie(string cookiename, string cookievalue, DateTime expires)
        {        
            HttpCookie cookie = new HttpCookie(cookiename)
            {
                Value = cookievalue,
                Expires = expires
            };
            HttpContext.Current.Response.Cookies.Add(cookie);
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM