ASP.NET授权模块主要有两个:FileAuthorizationModule和UrlAuthorizationModule。他们也实现了IHttpModule接口。这些模块可以参照所试用的身份验证类型来决定到底采用哪个ASP.NET授权模块:
如果试用的是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(未授权),之后请求就结束了。以上就是介绍ASP.NET授权模块
【编辑推荐】