background image

回 想 一 下 我 刚 接 触

.Net 时 , 也 曾 经 完 全 绕 过 .NET 的 验 证 , 自 己 编 码 采 用

Cookie+Session 实现身份验证,并且一个 Asp.Net 登录控件都没有使用,那时

候 的 理 由 是 : 我 要 使 用 自 定 义 的 用 户 表 , 不 能 使 用

Asp.Net 安 全 机 制 在

App_Data 下自动生成的 AspNetDB.mdf 中的一系列数据表。除此以外,还有一

个原因,就是

.Net 验证机制的核心 IPrincipal 和 Identity 提供的信息用户信息太

少了,当在页面后置代码中使用继承来的

User 属性(IPrincipal

 

类 型)时,它的

Identity 属 性 只 有 一 个 Name 与 用 户 数 据 相 关 (AuthenticationType 与

IsAuthenticated

 

都是与验证相 关

),而很多时候我们都需要许多额外的用户数据。

其实这只是一个误解罢了,以为使用

Asp.Net 的验证机制和登录控件就一定要使

用其附带的数据表,以为

Identity 就只能携带一个 Name 属性。

 

实 际 上 ,

.NET 的 安 全 机 制 包 括 了 几 个 部 分 , 除 了 验 证 以 外 , 还 包 括

MemberShip、Profile、Role

 

等,我们完全可以只使用它的验证机制,而 绕过它的

MemberShip、Profile 和 Role,来实现通常我们用 Cookie+Session 完成的功能,

 

而且更高效更安全。这篇文章将快速 地实现这样的一个流程。

 

开始前的准备 创建页面,配置

Web.config

我们先创建解决方案、建立站点,然后在站点中添加下述文件,它们将会在后面使用:

接 着 对

Web.config 进 行

一 下 配 置 , 首 先

看 根 目 录 下 的

Web.config: