登陆权限验证Session和Cookie用法及BasePage类使用
最近在做ASP.NET的项目时,接触到了登陆权限模块,所有总结了一下登陆时用到的知识和方法技巧。
如图说明:实现的效果如图,由于验证码验证比较简单这里就不介绍了

首先用代码生成器生成项目,以三层为例进行说明, 那么我以BlogUser表为例,然后就会有一个BlogUser实体类对象。
登陆的思想:当我们登陆成功的时候要将实体存入到session中,免登陆也是这个思想,只不过是当我们勾选免登陆的时候,第一次登陆进去,那么将用户的id存入到cookie中去,通过用户的id查找用户的实体,再赋值给session,那么session就不为空,就可以实现免登陆了。那么我们的BasePage又是什么呢?首先BasePage里面是其它页面的父类,只有通过登陆才能让用户去访问其它的页面,那么我们就用到PageBase类,然后在BasePage进行判断,如果Session为空,那么用户没登陆就跳转到登陆页面让用户登陆才能访问其它页面。
第一:前台登陆的主要代码:
1 BlogUserBLL bll = new BlogUserBLL();
//1.去数据库判断用户名和密码是否正确
List<BlogUser> list = bll.GetModelList("LoginName='" + name + "' and LoginPwd='" + md5Pwd + "'");
//2.判断用户集合是否存在
if(list.Count>)
{
//3.将用户信息保存到session中
Context.Session["uInfo"] = list[];
//4.判断用户是否选中了记住登陆
if (!string.IsNullOrWhiteSpace(remember))
{
//5.记住了就将用户id存入cookie中
HttpCookie cookie = new HttpCookie(“uid”,list[].Id.ToString());
cookie.Expires = DateTime.Now.AddDays();
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,原理差不多,写法还是有点区别,如果大家感兴趣的可以联系我,我可以发给大家,还有哪里有不清楚的也可以留言。
登陆权限验证Session和Cookie用法及BasePage类使用的更多相关文章
- Struts2 自定义拦截器实例—登陆权限验证
实现一个登陆权限验证的功能 message.jsp: <body> message:${message } </body> login.jsp: <% request.g ...
- shiro登陆权限验证
一>引入shirojar包 <!-- shiro登陆权限控制 --> <dependency> <groupId>org. ...
- .net core 2.0 登陆权限验证
首先在Startup的ConfigureServices方法添加一段权限代码 services.AddAuthentication(x=> { x.DefaultAuthenticateSche ...
- Spring Security 自定义 登陆 权限验证
转载于:https://www.jianshu.com/p/6b8fb59b614b 项目简介 基于Spring Cloud 的项目,Spring Cloud是在Spring Boot上搭建的所以按照 ...
- Struts2自定义拦截器实例—登陆权限验证
版本:struts2.1.6 此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面. ...
- Struts2自己定义拦截器实例—登陆权限验证
版本号:struts2.1.6 此实例实现功能:用户须要指定username登陆,登陆成功进入对应页面运行操作,否则返回到登陆页面进行登陆,当直接訪问操作页面(登陆后才干訪问的页面)时则不同意,须返回 ...
- Struts2他们拦截器实例定义—登陆权限验证
版本号:struts2.1.6 这种情况下实现功能:用户需要指定username登陆,进入相应的页面运行成功登陆作战,否则,它返回到着陆的登录页面,当直接进入操作页面(登陆访问页面后的能力)如果不同意 ...
- PHP——注册页面,审核页面,登录页面:加Session和Cookie
实现效果: 用户注册信息,管理员核对信息审核通过后,可实现注册的用户名和密码的成功登陆,利用session和cookie获取用户信息并且不能跳过登录页面直接进入主页面 1.Session存储在服务器可 ...
- ASP.NET通用权限验证组件实现
沙发(SF)通用权限验证组件 开篇 本篇介绍通用权限验证的实现代码思路,总共分为导入参数.解析XML.根据XML配置进行处理.返回结果. 代码架构图 1. 类介绍 1.SFWebPermissio ...
随机推荐
- java String常见的处理
import java.util.Arrays; class Demo5 { public static void main(String [] args) { String name1=" ...
- Java中的事务——JDBC事务和JTA事务
Java中的事务——JDBC事务和JTA事务 转载:http://www.hollischuang.com/archives/1658 之前的事务介绍基本都是数据库层面的事务,本文来介绍一下J2EE中 ...
- css布局学习笔记之max-width
设置块级元素的 width 可以阻止它从左到右撑满容器.然后你就可以设置左右外边距为 auto 来使其水平居中.元素会占据你所指定的宽度,然后剩余的宽度会一分为二成为左右外边距. div{ width ...
- 移动web前端的一些硬技能(二)动手前必须掌握的基本常识
记得刚开始接触移动端web的时候,书和网上的资料都不多,查起来很费劲,现在比以前要好很多了,可是还是会有一些刚接触移动端的朋友会问我一些我最初会遇到的问题,或许是书本写的并不那么重,也或许是这些知识写 ...
- Ubuntu 安装 pecl_http
由于开发环境需要用到pecl_http,根据网上找的教程一直没用按照成功,查看错误,pcre这里出错了,原来要安装这个libpcre3-dev,安装好这个就成功了,记下命令. $ sudo apt-g ...
- Python学习(三) 输出任意格式的字符串以及字符串的切片
在Python中想要输出一句话,如下 a='hello world' print a //打印出的是hello world print 'hello \n world' //打印出的是 //hello ...
- 400 bad request
这是查到的Http400状态码的定义 400 错误请求 - 请求中有语法问题,或不能满足请求. HTTP 400 - 请求无效. 表单传入的参数 userNa ...
- 观点:哪些人适合做FPGA开发?(转)
原文:http://xilinx.eetrend.com/blog/561 FPGA目前非常火,各个高校也开了FPGA的课程,但是FPGA并不是每个人都适合,FPGA讲究的是一个入道,入什么道,入电子 ...
- hdu 1355 The Peanuts
http://acm.hdu.edu.cn/showproblem.php?pid=1355 #include <cstdio> #include <iostream> #in ...
- Asp.net MVC Web.config配置技巧
一.视图引入命名空间的设置 之前经常写这样的代码,而且每个页面都要写: @model IEnumerable<MvcStart.Models.People_Model> 其实有一种很方便的 ...