Asp.Net基于forms的验证机制

原创 2004年06月29日 21:11:00

最近在看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设置

关于Forms 验证的完整解决方案

关于Forms 验证的完整解决方案代码! 下载地址: http://files.cnblogs.com/enric1985/LogSite-CustomSetting.rar 希望对于大家...
  • nic7968
  • nic7968
  • 2014年03月10日 04:29
  • 895

ASP.NET 身份验证机制

ASP.NET提供了3种认证方式:windows身份验证、Forms验证和Passport验证。 windows身份验证: IIS根据应用程序的设置执行身份验证。要使用这种验证方式,在IIS中必须禁...
  • linshichen
  • linshichen
  • 2016年08月13日 10:47
  • 285

Asp.net中基于Forms验证

Asp.net中基于Forms验证的角色验证授权 Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活。 Fo...
  • ffstarff
  • ffstarff
  • 2013年03月05日 15:22
  • 294

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

ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载) ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) ...
  • stuwangjianglin
  • stuwangjianglin
  • 2014年11月12日 11:32
  • 686

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

Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活。 Forms 验证方式对基于用户的验证授权提供了很好的支持...
  • lwj0310
  • lwj0310
  • 2014年06月21日 11:42
  • 293

ASP.NET Forms表单验证流程

1、站点web.config 配置Authentication 和Authorization 节点 loginUrl: 为用户访问指定页面前默认最先访问的页面。 authorization:为...
  • shumixys
  • shumixys
  • 2016年04月22日 14:31
  • 156

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

http://www.cnblogs.com/whtydn/archive/2009/10/21/1587240.html Asp.net的身份验证有有三种,分别是"Windows | Form...
  • mituan1234567
  • mituan1234567
  • 2013年07月31日 21:25
  • 342

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

原文: http://blog.csdn.net/goodshot/article/details/5942444 1. web.config配置好form authentication的信息 2...
  • xuefeiliuyuxiu
  • xuefeiliuyuxiu
  • 2016年12月25日 12:13
  • 85

ASP.NET身份验证——Windows身份认证

细说ASP.NET Windows身份认证 阅读目录 开始认识ASP.NET Windows身份认证访问 Active Directory在ASP.NET中访问Active Direct...
  • likingsn
  • likingsn
  • 2015年11月03日 11:08
  • 1939

Asp.Net Forms验证(自定义、角色提供程序)

以前开发项目时经常是自己开发一套用户权限管理系统进行验证,比较灵活。最近为了单点登录的问题又把Asp.Net自带的验证方式看了一遍,发现这种方式也比较方便,功能也还可以。在Asp.Net提供了三种常用...
  • sven_xu
  • sven_xu
  • 2015年06月02日 09:14
  • 163
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Asp.Net基于forms的验证机制
举报原因:
原因补充:

(最多只允许输入30个字)