回 想 一 下 我 刚 接 触
.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: