首先得創建一個母模板頁Master,創建一個服務器控件,把寫好的HTML代碼放到服務控件裏面。再建立一個WEB應用程序,把這個服務器控件給放到web應用程序裏面來。web
首先得考慮到當前這個用戶有沒有登陸,Session裏面有沒有存儲該用戶的信息數據庫
這個要在WEB應用程序裏面的Page_load裏面寫數組
- //if (Session["User"] != null)
- //{
- // Response.Write(((Model.User)Session["User"]).LoginId);
- //}
- //else {
- // Common.MD5File.GoToPage();
- //}
在服務器控件Page_load裏面寫這個是Post提交還Get訪問的服務器
- //判斷用戶是否Post提交的
- if (IsPostBack)
- {
- CheckUserLogin();//調用這個方法
- }
- else
- {
- //讀取用戶電腦中的cookie文件,而且進行內容判斷
- CheckCookie();
- }
當是GET訪問的時候,要記錄該用戶的Cookie,cookie
- private void CheckCookie()
- {
- //判斷cookie中是否有值,是否被修改
- if (Request.Cookies["cookieName"] != null && Request.Cookies["cookiePwd"] != null)
- {
- BLL.UserManager bll = new BLL.UserManager();
- string name = Request.Cookies["cookieName"].Value;
- //根據cookie中存儲的用戶名找cookie
- Model.User user = bll.GetModel(name);
- if (user != null)
- {
- string textPwd = Request.Cookies["cookiePwd"].Value;
- string enctryPwd = Enctry(user.LoginPwd);//將數據庫中的密碼進行加密
- //將cookie中存儲的密碼與數據庫中密碼進行比較
- if (textPwd == enctryPwd)
- {
- //注意不要忘記建立Session
- Session["User"] = user;
- //調用登陸判斷
- GoToCookiePage("登陸成功"); //這個方法在後面會解釋的
- }
- else
- {
- //Response.Write("密碼錯誤");
- //密碼被修改過刪除cookie文件 給這個Cookie設置過時時間。
- Response.Cookies["cookieName"].Expires = DateTime.Now.AddDays(-1);
- Response.Cookies["cookiePwd"].Expires = DateTime.Now.AddDays(-1);
- }
- }
- else
- {
- Response.Write("用戶不存在");
- }
- }
- }
- //當這個用戶第一次的時候,尚未
- public void CheckUserLogin()
- {
- //接收用戶輸入的信息值
- string name = Request.Form["txtName"];
- string pwd = Request.Form["txtPass"];
- string msg = string.Empty;//給用戶登陸狀態賦值爲空
- Model.User user = null;//建立一個實體對象
- BLL.UserManager bll = new BLL.UserManager();
- //定義一個方法,參數爲用戶賬號,密碼,登陸狀態,和當前登陸的用戶賬號
- bool b = bll.GetAjaxCheckUserLogin(name, pwd, out msg, out user);
- //當這個方法爲true的時候
- if (b)
- {
- //就查看Session裏面的有沒有這個用戶賬號
- Session["User"] = user;
- //表示用戶選擇複選框 當點擊這個複選框的時候,說明要記錄當前這個用戶。建立一個Cookie
- if (!string.IsNullOrEmpty(Request.Form["CheckedMe"]))//當Cookie裏面沒有用戶賬號的時候
- {
- //建立cookie 保存用戶賬號與密碼
- HttpCookie cName = new HttpCookie("cookieName", name);
- HttpCookie cPwd = new HttpCookie("cookiePwd", Enctry(pwd));//密碼須要加密的
- cName.Expires = DateTime.Now.AddDays(3);//定義這個Cookie的存活時間
- cPwd.Expires = DateTime.Now.AddDays(3);
- Response.Cookies.Add(cName);//把這個用戶的Cookie保存起來
- Response.Cookies.Add(cPwd);
- }
- GoToCookiePage(msg);//轉向到受保護的頁面
- }
- else
- {
- Response.Redirect("/ShowMsg.aspx?msg=" + Server.UrlEncode(msg) + "&txt=" + Server.UrlEncode("跳轉到登陸頁面") + "&url=/member/UserLogin.aspx");
- }
- }
- //取得用戶的密碼進行加密
- private string Enctry(string pwd)
- {
- return Common.MD5File.GetUserPwdMD5((Common.MD5File.GetUserPwdMD5(pwd)));
- }
- /// <summary>
- /// 定義的是一個用戶登陸成功的時候,轉向的受保護的頁面,參數爲登陸的狀態
- /// </summary>
- private void GoToCookiePage(string msg)
- {
- //當沒有這個登陸的時候,跳轉的時候帶着受保護頁面的Url地址Request.QueryString["returnUrl"];
- if (!string.IsNullOrEmpty(Request.QueryString["returnUrl"]))
- {
- Response.Redirect(Request.QueryString["returnUrl"]);
- }
- else
- {
- Response.Redirect("/ShowMsg.aspx?msg=" + Server.UrlEncode(msg) + "&txt=" + Server.UrlEncode("跳轉到首頁") + "&url=/Default.aspx");
- }
- }
- //在邏輯判斷層來判斷這個用戶的用戶名密碼狀態和當前這個用戶
- public bool GetCheckUserLogin(string name, string pwd, out string msg, out Model.User user)
- {
- DAL.UserServices dal = new UserServices();
- user = dal.GetModel(name);
- //當這個用戶賬號不爲空的時候
- if (user != null)
- {
- //判斷這個用戶的狀態
- if (user.UserState.Name=="正常")
- {
- //來比較傳過來的參數與數據庫裏面的密碼
- if (user.LoginPwd == pwd)
- {
- msg = "登陸成功";
- return true;
- }
- else
- {
- msg = "用戶密碼賬號錯誤";
- return false;
- }
- }
- else {
- msg = "用戶沒激活";
- return false;
- }
- }
- else
- {
- msg = "用戶不存在";
- return false;
- }
- }
- //MD5加密
- public static string GetUserPwdMD5(string pwd)
- {
- //建立一個MD5加密的對象
- MD5 md5 = MD5.Create();
- //建立一個字節數組,把傳過來的密碼進行加密
- byte[] buffer = Encoding.UTF8.GetBytes(pwd);
- byte[] pwdMd5=md5.ComputeHash(buffer);//把這個字節數組存放到這個md5的ComputeHash();
- StringBuilder sb = new StringBuilder();//建立一個拼接字符串對象。
- //循環遍歷這個字符串
- foreach (byte b in pwdMd5)
- {
- sb.Append(b.ToString("x2"));//轉成16進制的字符串
- }
- return sb.ToString();
- }
- /// <summary>
- /// 當要訪問一個受保護的須要登陸的頁面的,要轉向登陸頁面,登陸成功的時候帶着上一訪問的受保護的頁面
- /// </summary>
- public static void GoToPage()
- {
- HttpContext.Current.Response.Redirect("/member/userLoginIndex.aspx?returnUrl=" + HttpContext.Current.Request.Url.ToString());
- }