最近在看asp.net forum,对其中的验证机制看得模模糊糊,看完构建安全的 ASP.NET 应用程序中的表单身份验证部分,思路就很清晰了,稍做了点记录,以便查阅:

构建基于forms的验证机制过程如下:
1,设置IIS为可匿名访问和asp.net web.config中设置为form验证
2,检索数据存储验证用户,并检索角色(如果不是基于角色可不用)
3,使用FormsAuthenticationTicket创建一个Cookie并回发到客户端,并存储
  角色到票中,如:
  FormsAuthentication.SetAuthCookie(Username,true | false)
  cookies保存时间:
  HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.Now.AddDays(1)

如果需要存储角色,采用:
 FormsAuthenticationTicket authTicket = new
 FormsAuthenticationTicket(
            1, // version
            txtUserName.Text, // user name
            DateTime.Now, // creation
            DateTime.Now.AddMinutes(20),// Expiration
            false, // Persistent
            roles ); // User data
  roles是一个角色字符串数组
  string encryptedTicket = FormsAuthentication.Encrypt(authTicket); //加密

存入Cookie
  HttpCookie authCookie =
  new HttpCookie(FormsAuthentication.FormsCookieName,
  encryptedTicket);

Response.Cookies.Add(authCookie);

4,在Application_AuthenticateRequest事件中处理程序中(Global.asax)中,使用
  票创建IPrincipal对象并存在HttpContext.User中
  代码:
  HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
  FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);//解密
  string[] roles = authTicket.UserData.Split(new char[]{';'});//根据存入时的格式分解,;或|....
  Context.User = new GenericPrincipal(Context.User.Identity, Roles);//存在HttpContext.User中

5,需要对某些页面进行角色控制,有两种方法:
 5.1,web.config中加
    <location path="EditPost.aspx">
 <system.web>
  <authorization>
                        <allow roles="RoleName" />
   <deny users="?" />
  </authorization>
 </system.web>
    </location>
 5.2,把只能是某种角色访问的文件放在同一目录下,在此目录下添加一个web.config
   <configuration>
     <system.web>
 <authorization>
           <allow roles="RoleName" />
    <deny users="*" />
 </authorization>
     </system.web>
   </configuration>
  说明:子目录的web.config设置优先于父目录的web.config设置

转载于:https://www.cnblogs.com/hzuIT/articles/921905.html

Asp.Net基于forms的验证机制,记录一下...相关推荐

  1. FormsAuthenticationTicket基于forms的验证

    构建基于forms的验证机制过程如下: 1,设置IIS为可匿名访问和asp.net web.config中设置为form验证 2,检索数据存储验证用户,并检索角色(如果不是基于角色可不用) 3,使用F ...

  2. ASP.NET Web下基于Forms的验证

    使用Forms验证,要实现对某个目录下的文件或某个文件不验证,可以按照如下方式来解决: 在Web.Config的<configuration>节下加入如下配置节: 1<locatio ...

  3. Asp.net中基于Forms验证的角色验证授权[转]

    Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Forms 验证方式对基于用户的验证授 ...

  4. 【转载】Asp.Net中基于Forms验证的角色验证授权

    Asp.Net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Forms 验证方式对基于用户的验证授 ...

  5. Asp.net中基于Forms验证的角色验证授权

    Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Forms 验证方式对基于用户的验证授 ...

  6. ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载)

    ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) 收藏 转自:http://www.aspxclub.com/l12/c_3689.html 本篇文章介绍了在ASP ...

  7. java实现登录验证机制的技术_基于token的登陆验证机制

    session简介 做过Web开发的程序员应该对Session都比较熟悉,Session是一块保存在服务器端的内存空间,一般用于保存用户的会话信息. 用户通过用户名和密码登陆成功之后,服务器端程序会在 ...

  8. 实现基于 ASP.NET Forms 身份验证的跨子域单点登录

    对于跨应用程序的 ASP.NET Forms 身份验证,相信大家应该都不陌生,几年前很多文章都介绍了如何实现,比如 MSDN 的 跨应用程序进行 Forms 身份验证,唐朝程序员 的 ASP.NET站 ...

  9. [转][.NET 基于角色安全性验证] 之三:ASP.NET Forms 身份验证

    在开发过程中,我们需要做的事情包括: 1. 在 web.config 中设置 Forms 身份验证相关参数. 2. 创建登录页. 登录页中的操作包括: 1. 验证用户名和密码是否正确. 2. 创建身份 ...

  10. ASP.NET身份验证机制membership入门——配置篇(1){转}

    几乎所有的系统中都会使用到访问控制和角色管理这样的功能,例如:新建.修改.删除用户和角色,为用户分配角色,管理角色中的用户等等.于是MS在ASP.NET 2.0开始,实现了这些功能,使得我们在开发中, ...

最新文章

  1. 机器学习也能套模版:在线选择模型和参数,一键生成demo
  2. 【s操作】上瘾了!继续轻松优雅的解决孩子的初中数学题,matlab入门新方法解题无压力...
  3. STM32F103CB 芯片FLASH DOWNLOAD编程地址范围设置相关问题记录
  4. 2019年下信息系统项目管理师真题讲解【视频+PDF下载】
  5. ubuntu安装vmware 64位
  6. 7-Flink的分布式缓存
  7. Memory Monitor
  8. (ZT)关于IAP防止破解的几点
  9. Win11怎么进行长截图?Win11长截图的方法
  10. 【UML】免费的UML绘图工具yEd
  11. 51单片机(二)—— 如何烧写51单片机程序
  12. 电商网站建设步骤_电商网站建设的注意事项_OctShop
  13. Python爬虫零基础(以爬豆瓣电影top250为例,尝试自己写爬豆瓣读书top250的代码)
  14. 3+1活动:结交一个朋友、参与一项运动 、培养一个兴趣爱好 、阅读一本好书
  15. 计算机知识演讲稿,乔布斯的演讲稿 我们的IT梦想
  16. 什么是ASP.NET
  17. 关于直播,所有的技术细节
  18. 高效电脑工具Wox+everything
  19. Python爬虫-爬取17K小说
  20. detectron运行自己数据集,NotImplementedError: No evaluator for dataset: my_dataset_val错误

热门文章

  1. FireFox下表单无法刷新重置问题的分析与解决(转)
  2. viewport原理和使用和设置移动端自适应的方法(移动适应电脑)
  3. 简单的使用git克隆上传创建下载删除
  4. 本两个Build工作总结
  5. .net微信公众号开发——群发消息
  6. PhoneGap+Xcode6环境配置
  7. cookie跨域问题汇总
  8. [转]Banner设计“点横竖撇捺”
  9. NVIDIA Linux Display Driver 100.14.09
  10. 全表行转列——动态SQL