登陸界面有用戶名、密碼輸入框,一個’記住賬號密碼‘的復選框。
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); } }