zoukankan      html  css  js  c++  java
  • FormsAuthenticationTicket基于forms的验证(1)

    FormsAuthenticationTicket基于forms的验证   

    构建基于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.FormCookieName];
    FormsAuthenticationTicket authTicket=FromsAuthentication.Decrypt(authCookie);//解密
    string[] roles=authTicket.UserData.Split(new char[]{';'})//根据存入是的格式分解
    Context.User=new GenericPrincipal(Context.User.Identity,Roles)
    
      //判断某个角色验证 
     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事件中加入

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

     

  • 相关阅读:
    蚂蚁金服SOFAMesh在多语言上的实践
    2018第48周日
    git只拉取github部分代码的方法
    深入理解brew link命令
    openssl/ssl.h file not found
    react热加载失败
    pycharm批量清楚pyc、$py.class文件
    Hash history cannot PUSH the same path; a new entry will not be added to the history stack
    JavaScript indexOf() 方法,获取元素的位置;Object.keys()获取对象的所有key的数组
    JavaScript删除数组里的某个元素
  • 原文地址:https://www.cnblogs.com/zchunhua/p/5418493.html
Copyright © 2011-2022 走看看