技术开发 频道

ASP.NET生命周期中的验证以及身份验证模块

  3.授权模块
       
  在ASP.NET中内置的授权模块主要有两个:  FileAuthorizationModule和UrlAuthorizationModule。他们也实现了IHttpModule接口。这些模块可以参照所试用的身份验证类型来决定到底采用哪个授权模块:
      
  如果试用的是Windows身份验证,那么在授权检查的时候就会使用FileAuthorizationModule;
      
  如果在web.config中提供了<authorization/>元素,那么就会采用UrlAuthorizationModule。如下面的:

<authorization>
        
<allow roles ="" users=""/>
        
<deny users=""/>
    
</authorization>

  FileAuthorizationModule:
       
  如果使用 Windows身份验证,就会采用FileAuthorizationModule模块。这个模块可以处理Authorization事件,并且能够对IIS提供的请求的令牌和目标资源执行访问检查。而且这也用到了系统的ACL(访问控制列表).

  例如,如果请求的资源是Default.aspx,当前的用户是xiaoyang,那么FileAuthorizationModule就会执行访问检查,看看xiaoyang时候具备访问Default.aspx的读的权限,如果在Windows的用户账户中有xiaoyang这个账户,并且具有访问的权限,那么请求成功,否则,FileAuthorizationModule就把Reponse.StatusCode设置为401(未授权),之后请求就结束了。
 
  UrlAuthorizationModule:

       
  和上面的处理模块不一样,不管使用何种类型的身份验证,只要配置了web.config中的<authorization/>元素,就要使用UrlAuthorizationModule模块。这个模块在处理的时候执行如下:

  (1)把<authorization/>中声明的用户名和HttpContext.User.Identity进行比较
  (2)把<authorization/>声明的角色信息和HttpContext.User.IsInRole比较
      
  如果比较成功就可以访问相应的授权的资源,否则把Reponse.StatusCode设置为401(未授权),之后请求就结束了。

0
相关文章