程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 登陸權限驗證Session和Cookie用法及BasePage類使用

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

編輯:關於ASP.NET

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

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

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

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

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

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

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

主要代碼

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

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

    No
  1. 下一頁:
Copyright © 程式師世界 All Rights Reserved