FormsAuthenticationTicket基于forms的验证

转载 2007年09月26日 16:32:00
构建基于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, // 版本号。
  txtUserName.Text, // 与身份验证票关联的用户名。
  DateTime.Now, // Cookie 的发出时间。
  DateTime.Now.AddMinutes(20),// Cookie 的到期日期。
  false, // 如果 Cookie 是持久的,为 true;否则为 false。
  roles ); // 将存储在 Cookie 中的用户定义数据。
  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中
 
 判断某个角色验证
 HttpContext.Current.User.IsInRole(roles)
 具体实现
 
 Web.config文件
 加入节点,name为COOKIE名称,loginUrl为没有通过验证跳转的地址
 <system.web>
  <authentication mode="Forms">
  <forms name="Hstear"
 loginUrl="login.aspx" protection="All" path="/" timeout="40"/>
  </authentication>
 </system.web>
 设置目录访问 path为目录名,roles为票据中的角色名
 发现网上的都说要单独一个WEB.CONFIG文件放在目录中,但实际在根目录中设置即可,单个文件也一样
 <location path="Admin">
  <system.web>
  <authorization>
  <allow roles="admin"/>
  <deny users="*"/>
  </authorization>
  </system.web>
 </location>
 Global.asax文件
 Application_AuthenticateRequest事件中加入 
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
...{
 
string cookieName = FormsAuthentication.FormsCookieName;
 HttpCookie authCookie 
= Context.Request.Cookies[cookieName];
 FormsAuthenticationTicket authTicket 
= null;
 
try
 
...{
     authTicket 
= FormsAuthentication.Decrypt(authCookie.Value);
 }

 
catch(Exception ex)
 
...{
     
return;
 }

 
 
string[] roles = authTicket.UserData.Split(new char[]...{','});//如果存取多个角色,我们把它分解
 
 FormsIdentity id 
= new FormsIdentity( authTicket );
 
 GenericPrincipal principal 
= new GenericPrincipal(id, roles);
 Context.User 
=principal;//存到HttpContext.User中
 
}

 原理,将用户角色信息保存在票据中,通过Global.asax,WEB.CONFIG中的设置,判断角色的权限

FormsAuthenticationTicket基于Forms的验证

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

FormsAuthenticationTicket基于forms的验证

作者:hubro 来源:http://www.hubro.net/html_OS-Gdo9vh3Q.aspx 构建基于forms的验证机制过程如下:  1,设置IIS为可匿名访问和asp.net we...
  • comfort857
  • comfort857
  • 2007年07月12日 14:52
  • 268

基于FormsAuthentication的用户、角色身份认证 webapi中也有介绍

http://www.cnblogs.com/dedeyi/p/3424979.html
  • a5251199
  • a5251199
  • 2016年11月18日 11:55
  • 1093

asp.net FormsAuthenticationTicket基于forms的验证

1,设置IIS为可匿名访问和asp.net web.config中设置为form验证2,检索数据存储验证用户,并检索角色(如果不是基于角色可不用)3,使用FormsAuthenticationTick...
  • mywebstudy
  • mywebstudy
  • 2011年07月17日 09:29
  • 207

关于asp.net Forms验证 FormsAuthenticationTicket

 下面大概的看一下Forms的过程。 Forms身份验证基本原理: 一 身份验证 要采用Forms身份验证,先要在应用程序根目录中的Web.config中做相应的设置:        表示本应用程序采...
  • chaochao6078
  • chaochao6078
  • 2010年11月23日 16:16
  • 892

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

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

ASP.NET Forms验证详解

创建网站中,常常会使用到身份验证。asp.net中内置了几种身份验证的方式,如Windows、Froms、Passport等。这几种身份验证的方式各有不同。一般来说,网站的身份验证方式都会经过以下几个...
  • moonpure
  • moonpure
  • 2015年04月25日 15:23
  • 2049

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

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

FormsAuthentication.SignOut() 会删除所有登录凭证

void m_view_lnbExit_Exit(object sender, EventArgs e)         {            FormsAuthentication.Sign...
  • shanshan2099
  • shanshan2099
  • 2014年04月17日 11:48
  • 2138

..经典FormsAuthenticationTicket 分析

转载地址:http://blog.csdn.net/byondocean/article/details/7164117 Asp.net中基于Forms验证的角色验证授权 ...
  • WDBS_05
  • WDBS_05
  • 2017年06月26日 13:37
  • 472
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FormsAuthenticationTicket基于forms的验证
举报原因:
原因补充:

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