[转] ASP.net的身份验证方式有哪些?分别是什么原理?

Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活。 Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个 web应用就会连同这个身份Cookie一起发送到服务端。服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了。

问题来了,在实际是用中我们往往需要的是基于角色,或者说基于用户组的验证和授权。对一个网站来说,一般的验证授权的模式应该是这样的:根据实际需 求把用户分成不同的身份,就是角色,或者说是用户组,验证过程不但要验证这个用户本身的身份,还要验证它是属于哪个角色的。而访问授权是根据角色来设置 的,某些角色可以访问哪些资源,不可以访问哪些资源等等。要是基于用户来授权访问将会是个很不实际的做法,用户有很多,还可能随时的增减,不可能在配置文 件中随时的为不断增加的新用户去增加访问授权的。

下面大概的看一下Forms的过程。

Forms身份验证基本原理:

一.身份验证

要采用Forms身份验证,先要在应用程序根目录中的Web.config中做相应的设置:

<authentication mode="forms">     <forms name=".ASPXAUTH " slidingExpiration="true" loginUrl="/login.aspx" timeout="30" path= "/" domain=".abc.com">    </forms>   </authentication>

其中<authentication mode= "forms"> 表示本应用程序采用Forms验证方式。

1. <forms>标签中的name表示指定要用于身份验证的 HTTP Cookie。默认情况下,name 的值是 .ASPXAUTH。采用此种方式验证用户后,以此用户的信息建立一个FormsAuthenticationTicket类型的身份验证票,再加密序列 化为一个字符串,最后将这个字符串写到客户端的name指定名字的Cookie中.一旦这个Cookie写到客户端后,此用户再次访问这个web应用时会 将连同Cookie一起发送到服务端,服务端将会知道此用户是已经验证过的.

再看一下身份验证票都包含哪些信息呢,我们看一下FormsAuthenticationTicket类:

CookiePath

      : 返回发出 Cookie 的路径。注意,窗体的路径设置为 /。由于窗体区分大小写,这是为了防止站点中的 URL 的大小写不一致而采取的一种保护措施。这在刷新 Cookie 时使用

Expiration

      : 获取 Cookie 过期的日期/时间。

IsPersistent

      : 如果已发出持久的 Cookie,则返回 true。否则,身份验证 Cookie 将限制在浏览器生命周期范围内。

IssueDate

      : 获取最初发出 Cookie 的日期/时间。

Name

      : 获取与身份验证 Cookie 关联的用户名。

UserData

      :获取存储在 Cookie 中的应用程序定义字符串。

Version

    : 返回字节版本号供将来使用。

最新文章

  1. arch+xfce4系统配置
  2. 关于.NET知识体系结构图总结
  3. Unity Standard Assets 简介之 Characters
  4. Mysqli封装
  5. 使用redis进行消息推送
  6. 关于 xib 的使用
  7. [转] 不要被C++“自动生成”所蒙骗
  8. tracker-store and tracker-miner-fs eating up my CPU on every startup
  9. UVA 10911 Forming Quiz Teams(dp + 集合最优配对问题)
  10. 封装一个Ajax工具函数
  11. Safari WebApp 模拟 原声APP禁止打开新窗口JS代码
  12. Zepto源码分析-动画(fx fx_method)模块
  13. yii2 Rbac使用yii命令一键建表
  14. Linux学习(十五)LVM
  15. qt5.11.2+vs2017环境下配置pcl1.8.1以及第三方依赖库vtk的编译
  16. return和throw某些特性相似
  17. js中浅拷贝和深拷贝以及深拷贝的实现
  18. rest framework 源码流程
  19. Linux命令(二十二) 改变文件权限 chomd
  20. cocoapods导入三方库头文件找不到问题

热门文章

  1. 关于CPU位数,OS位数以及内存大小关系的一点总结
  2. Swift中由找不到removeAll(where:)方法引起的连锁反应(上)
  3. BZOJ4894 天赋 【矩阵树定理】
  4. 《R语言实战》读书笔记--第二章 创建数据集
  5. bzoj 4443 [Scoi2015]小凸玩矩阵 网络流,二分
  6. 一天一条linux命令 for zipon
  7. 转:android service总结2
  8. 设置小于12px的字体
  9. UVA 10330 Power Transmission
  10. trickle charging current is 0A ?