登陸權限驗證Session和Cookie用法及BasePage類使用


     最近在做ASP.NET的項目時,接觸到了登陸權限模塊,所有總結了一下登陸時用到的知識和方法技巧。

如圖說明:實現的效果如圖,由於驗證碼驗證比較簡單這里就不介紹了

    首先用代碼生成器生成項目,以三層為例進行說明, 那么我以BlogUser表為例,然后就會有一個BlogUser實體類對象。

登陸的思想:當我們登陸成功的時候要將實體存入到session中,免登陸也是這個思想,只不過是當我們勾選免登陸的時候,第一次登陸進去,那么將用戶的id存入到cookie中去,通過用戶的id查找用戶的實體,再賦值給session,那么session就不為空,就可以實現免登陸了。那么我們的BasePage又是什么呢?首先BasePage里面是其它頁面的父類,只有通過登陸才能讓用戶去訪問其它的頁面,那么我們就用到PageBase類,然后在BasePage進行判斷,如果Session為空,那么用戶沒登陸就跳轉到登陸頁面讓用戶登陸才能訪問其它頁面。

第一:前台登陸的主要代碼:

 1                 BlogUserBLL bll = new BlogUserBLL();
 2                //1.去數據庫判斷用戶名和密碼是否正確
 3                 List<BlogUser> list = bll.GetModelList("LoginName='" + name + "' and LoginPwd='" + md5Pwd + "'");
 4                 //2.判斷用戶集合是否存在
 6                 if(list.Count>0)
 7                 {
 8                     //3.將用戶信息保存到session中
 9                     Context.Session["uInfo"] = list[0];
10                     //4.判斷用戶是否選中了記住登陸
11                     if (!string.IsNullOrWhiteSpace(remember))
12                     { 
13                         //5.記住了就將用戶id存入cookie中
14                         HttpCookie cookie = new HttpCookie(“uid”,list[0].Id.ToString());
15                         cookie.Expires = DateTime.Now.AddDays(3);
16                         Context.Response.Cookies.Add(cookie);
17                     }
18                     Response.Write("<script>alert('登陸成功');window.location='BlogList.aspx'</script>");
19                 }
20                 else
21                 {
22                     Response.Write("<script>alert('登陸失敗,請重新登陸');window.location='/Login.aspx'</script>");
23                 }
24                 Response.End();

第二:PageBase類,首先這個類要繼承System.Web.UI.Page,其實這個類主要是重寫了一個方法,這涉及到aspx頁面的生命周期和一系列的管道事件,簡單的來說吧,這相當於一個過濾器,當你請求其它頁面(要登陸之后才能訪問),那么它們都繼承這個頁面,會先在這個頁面判斷你是否有登陸,如果沒有登陸,那么就跳轉到登陸頁面去。

主要代碼

 1      protected override void OnInit(EventArgs e)
 2         {
 3             if (Session["uInfo"] == null)
 4             {
 5                 //1.判斷用戶是否勾選記住三天免登陸
 6                 if (Request.Cookies[“uid”] != null)
 7                 {
 8                     BlogUserBLL bll = new BlogUserBLL();
 9                     //2.通過cookie里傳人的數據得到數據實體
10                     BlogUser umodel = bll.GetModel(int.Parse(Request.Cookies["uid"].Value));
11                     //3.將實體存入session中
12                     Session["uInfo"] = umodel;
13                     return;
14                 }
15                //4.跳轉到登陸頁面
16                 Response.Redirect("/Login.aspx");
17             }
18             base.OnInit(e);
19         }

注意:BasePage是針對於aspx頁面的,那么ashx頁面,我們又會有另外一個父類,是BaseHandler,原理差不多,寫法還是有點區別,如果大家感興趣的可以聯系我,我可以發給大家,還有哪里有不清楚的也可以留言。


免責聲明!

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



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