ASP.NET安全问题--Forms验证(后篇)--实战篇
来源:互联网 发布:英语四六级真题软件 编辑:程序博客网 时间:2024/06/05 02:50
ASP.NET安全问题--Forms验证实战篇
前言:通过之前的几篇文章,相信大家对Forms验证有了一定的了解,也清楚了Identity,IPrincipal,票据等概念。之前的文站一直没有把验证和数据库联系起来,本篇就从这方面讲解,用代码来演示!而且代码中也涉及到一些角色授权的问题,为之后的文章伏笔!
今天话题如下:
验证流程讲述
数据库准备
代码编写
验证流程讲述
我们首先假设一个场景:用户现在已经打开了我们的首页Default.aspx,但是有些资源只能是登录用户才可以看到的,那么如果这个用户想要查看这些资源,那么他就要登录。而且这个用户已经有了一个帐号。(我们本篇主要的话题是身份验证,至于创建用户账户是怎么创建的,我们不关心,方法很多,如直接一个数据库插入就行了!)
我们现在就把我们的一些流程说下:
1.用户登录,在输入框中输入用户名和密码信息
2.点击登录按钮后,到数据库中查询该用户是否存在
3 如果存在,服务器端代码就创建一个身份验证的票据,保存在cookie中,然后发送到客户端的浏览器
4.用户已经有了验证的cookie,那么就页面就跳转到用户之前请求的页面
数据库准备
那么下面我们就开始详细讲述:
首先,我们我们肯定要先得创建一个数据库,我们就取名为Login表,创建一个用户信息表,我们在在表中建立三个字段UserName,UserPassword,UserRole(大家可以创建更多字段,我这里只是演示,大家可以扩展的). 至于表中的数据,大家自己随便插入几条!
代码编写
因为我们常常要验证用户,所以我们把验证用户的代码写成一个方法放在App_Code目录下的Helpers.cs类中
代码如下:
<forms name=”.mycookie” path=”/” loginUrl=”Login.aspx” protection=”All”
timeout=”40” />
</authentication>
<deny users=”?”/>
</authorization>
在Login.aspx转向到Default.aspx页面跳转的过程中,其实我们在请求Default.aspx页面,这个我们之前请求的过程没有任何的区别,也是一样要经历ASP.NET的一些生命周期,但是这次我们的浏览器中已经有了身份验证的cookie,ASP.NET运行时在处理,在处理Application_AuthenticateRequest事件时就要解析我们的cookie了。其实在之前我们登录之前,在这个事件代码中也解析了cookie的,只是那时候没有找到cookie而以。
Application_AuthenticateRequest事件的代码中,其实就是解析cookie,然后把用户的身份标识,并且把用户的身份信息保存起来:
{
//
}
{
//
}
- ASP.NET安全问题--Forms验证(后篇)--实战篇
- ASP.NET安全问题--Forms验证(后篇)--实战篇
- (转)ASP.NET安全问题--Forms验证实战篇
- ASP.NET安全问题--Forms验证的具体介绍(上篇)
- ASP.NET安全问题--Forms验证的具体介绍(上篇)
- ASP.NET安全问题--ASP.NET生命周期中的验证以及身份验证模块
- ASP.NET安全问题--ASP.NET生命周期中的验证以及身份验证模块
- ASP.NET安全问题--ASP.NET生命周期中的验证以及身份验证模块
- ASP.NET安全问题--ASP.NET中的授权问题(前篇)
- ASP.NET安全问题--ASP.NET安全架构
- ASP.NET安全问题--ASP.NET安全架构
- ASP.NET安全问题--Froms验证的具体介绍(中篇)
- (转)ASP.NET安全问题--Froms验证的具体介绍(上篇)
- (转)ASP.NET安全问题--Froms验证的具体介绍(中篇)
- ASP.NET安全问题--Froms验证的具体介绍(中篇)
- ASP.NET安全问题--Froms验证的具体介绍(中篇)
- Asp.Net Forms验证
- Asp.Net Forms验证
- ASP.NET安全问题--Forms验证的具体介绍(上篇)
- Hibernate更新数据
- ASP.NET安全问题--Froms验证的具体介绍(中篇)
- 将当前日期的毫秒转化为字符串
- JS小技巧
- ASP.NET安全问题--Forms验证(后篇)--实战篇
- Javascript 验证日期
- 网页设计常用技巧
- 用正则表达式的观点看待.NET编程设计
- Oracle中实现自动增长列
- JAVA中用Calendar输出时间
- J2EE 36 Package
- 用正则表达式看.NET编程--.NET核心正则类详解
- jxl 的用法