最近在做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,原理差不多,寫法還是有點區別,如果大家感興趣的可以聯系我,我可以發給大家,還有哪裡有不清楚的也可以留言。