Asp.Net基于forms的验证机制,记录一下...
最近在看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的验证机制,记录一下...相关推荐
- FormsAuthenticationTicket基于forms的验证
构建基于forms的验证机制过程如下: 1,设置IIS为可匿名访问和asp.net web.config中设置为form验证 2,检索数据存储验证用户,并检索角色(如果不是基于角色可不用) 3,使用F ...
- ASP.NET Web下基于Forms的验证
使用Forms验证,要实现对某个目录下的文件或某个文件不验证,可以按照如下方式来解决: 在Web.Config的<configuration>节下加入如下配置节: 1<locatio ...
- Asp.net中基于Forms验证的角色验证授权[转]
Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Forms 验证方式对基于用户的验证授 ...
- 【转载】Asp.Net中基于Forms验证的角色验证授权
Asp.Net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Forms 验证方式对基于用户的验证授 ...
- Asp.net中基于Forms验证的角色验证授权
Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Forms 验证方式对基于用户的验证授 ...
- ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载)
ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) 收藏 转自:http://www.aspxclub.com/l12/c_3689.html 本篇文章介绍了在ASP ...
- java实现登录验证机制的技术_基于token的登陆验证机制
session简介 做过Web开发的程序员应该对Session都比较熟悉,Session是一块保存在服务器端的内存空间,一般用于保存用户的会话信息. 用户通过用户名和密码登陆成功之后,服务器端程序会在 ...
- 实现基于 ASP.NET Forms 身份验证的跨子域单点登录
对于跨应用程序的 ASP.NET Forms 身份验证,相信大家应该都不陌生,几年前很多文章都介绍了如何实现,比如 MSDN 的 跨应用程序进行 Forms 身份验证,唐朝程序员 的 ASP.NET站 ...
- [转][.NET 基于角色安全性验证] 之三:ASP.NET Forms 身份验证
在开发过程中,我们需要做的事情包括: 1. 在 web.config 中设置 Forms 身份验证相关参数. 2. 创建登录页. 登录页中的操作包括: 1. 验证用户名和密码是否正确. 2. 创建身份 ...
- ASP.NET身份验证机制membership入门——配置篇(1){转}
几乎所有的系统中都会使用到访问控制和角色管理这样的功能,例如:新建.修改.删除用户和角色,为用户分配角色,管理角色中的用户等等.于是MS在ASP.NET 2.0开始,实现了这些功能,使得我们在开发中, ...
最新文章
- 机器学习也能套模版:在线选择模型和参数,一键生成demo
- 【s操作】上瘾了!继续轻松优雅的解决孩子的初中数学题,matlab入门新方法解题无压力...
- STM32F103CB 芯片FLASH DOWNLOAD编程地址范围设置相关问题记录
- 2019年下信息系统项目管理师真题讲解【视频+PDF下载】
- ubuntu安装vmware 64位
- 7-Flink的分布式缓存
- Memory Monitor
- (ZT)关于IAP防止破解的几点
- Win11怎么进行长截图?Win11长截图的方法
- 【UML】免费的UML绘图工具yEd
- 51单片机(二)—— 如何烧写51单片机程序
- 电商网站建设步骤_电商网站建设的注意事项_OctShop
- Python爬虫零基础(以爬豆瓣电影top250为例,尝试自己写爬豆瓣读书top250的代码)
- 3+1活动:结交一个朋友、参与一项运动 、培养一个兴趣爱好 、阅读一本好书
- 计算机知识演讲稿,乔布斯的演讲稿 我们的IT梦想
- 什么是ASP.NET
- 关于直播,所有的技术细节
- 高效电脑工具Wox+everything
- Python爬虫-爬取17K小说
- detectron运行自己数据集,NotImplementedError: No evaluator for dataset: my_dataset_val错误