登陆权限验证Session和Cookie用法及BasePage类使用_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 登陆权限验证Session和Cookie用法及BasePage类使用

登陆权限验证Session和Cookie用法及BasePage类使用

 2014/8/18 2:53:28  博客小园丁  程序员俱乐部  我要评论(0)
  • 摘要:最近在做ASP.NET的项目时,接触到了登陆权限模块,所有总结了一下登陆时用到的知识和方法技巧。如图说明:实现的效果如图,由于验证码验证比较简单这里就不介绍了首先用代码生成器生成项目,以三层为例进行说明,那么我以BlogUser表为例,然后就会有一个BlogUser实体类对象。登陆的思想:当我们登陆成功的时候要将实体存入到session中,免登陆也是这个思想,只不过是当我们勾选免登陆的时候,第一次登陆进去,那么将用户的id存入到cookie中去,通过用户的id查找用户的实体
  • 标签:用法 使用 Cookie ASE

     最近在做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,原理差不多,写法还是有点区别,如果大家感兴趣的可以联系我,我可以发给大家,还有哪里有不清楚的也可以留言。

上一篇: Silverlight项目笔记2:初识Prism以及IoC 下一篇: 没有下一篇了!
发表评论
用户名: 匿名