asp.net 授权

授权的目的是确定是否为标识授予对给定资源访问的请求类型。有两种对给定资源进行授权访问的基本方法:

文件授权
文件授权由 FileAuthorizationModule 执行,且当使用 Windows 身份验证时,文件授权处于活动状态。它对 .aspx 或 .asmx 处理程序文件进行访问控制列表 (ACL) 的检查,以确定用户是否应具有访问权。应用程序可以进一步使用模拟方法对所访问的资源进行资源检查。有关模拟的详细信息,请参阅 ASP.NET 模拟。

URL 授权
URL 授权由 URLAuthorizationModule 类执行,该类会将用户和角色映射到 URL 名称空间的各个部分中。该模块可以实现肯定和否定的授权断言。也就是说,可以使用该模块选择性地允许或拒绝特定的集合、用户以及角色对 URL 名称空间中任意部分的访问。

URLAuthorizationModule 在任何时候都是可用的。仅需将用户和/或角色列表放在某个配置文件的 <authorization> 部分中的 <allow> 或 <deny> 元素中。

要建立访问某一特定目录的条件,必须将含有 <authorization> 部分的配置文件放进该目录中。为该目录所设置的条件也适用于其子目录,除非子目录中的配置文件覆盖了这些条件。该部分中的一般语法如下:

<[element] [users] [roles] [verbs]/>element 是必需的。必须包含 users 或 roles 属性。也可同时包含两个,但包含两个并不是必需的。verbs 属性是可选的。

允许的元素是 <allow> 和 <deny>,分别用于授予和撤销访问权限。每个元素都支持三种属性,其定义如下表所示。

属性 描述
roles 为该元素识别目标角色。该请求的相关 IPrincipal 对象确定角色的成员身份。可以将任意 IPrincipal 对象附加到给定请求的上下文中,然后这些对象可以用您选择的任何方法来确定角色成员身份。例如,默认的 WindowsPrincipal 类使用 Microsoft Windows NT 组来确定角色成员身份。
users 为该元素识别目标标识。
verbs 定义操作所应用的 HTTP 动作,例如,GET、HEAD 和 POST。

也拒绝匿名用户。

下例将访问权限授予 Kim 和 Admins 角色的成员,同时拒绝 John 和所有匿名用户的访问:

<authorization>
    <allow users="Kim"/>
    <allow roles="Admins"/>
    <deny users="John"/>
    <deny users="?"/>
</authorization>用户和角色都可以使用由逗号分隔的列表引用多个实体,如下例所示。

<allow users="John, Kim, contoso/Jane"/>请注意域账号 (contoso/Jane) 必需包含域名和用户名的组合。

除了标识名称外,还有两种特殊标识,如下表所示。

标识 描述
* 引用所有标识
? 引用匿名标识

要允许 John 而拒绝任何其他用户的访问,可能要构建如下的配置部分。

<authorization>
    <allow users="John"/>
    <deny users="*"/>
</authorization>下例使每个人都可以执行 GET 动作,但只有 Kim 才能使用 POST。

<authorization>
    <allow verb="GET" users="*"/>
    <allow verb="POST" users="Kim"/>
    <deny verb="POST" users="*"/>
</authorization>使用下面的启发式方法来应用规则:

位于较低目录级别中的配置文件所包含的规则优先于位于较高目录级别中的规则。系统通过构建 URL 的所有规则合并列表,结合离列表起始处最近的规则(在分级结构中最靠近的)来确定优先的规则。
如果给定了针对 URL 的一组合并规则,系统将从列表起始处开始检查规则,直到发现第一个匹配为止。请注意 ASP.NET 的默认配置包含授权所有用户的 <allow users="*"> 元素。如果没有发现匹配的规则,就会允许该请求(除非该请求因其他情况而遭拒绝)。如果发现了匹配且该匹配是 <deny> 元素,它就会返回 401 状态代码。应用程序或站点在其顶层能很容易地配置 <deny users="*"> 元素来禁止该行为。
如果 <allow> 匹配,模块将不做任何处理,而是让该请求继续进行。

还可以使用 <location> 标记来指定某个特定文件或目录,该标记(在 <location> 和 </location> 标记之间)包括的设置要应用于该特定文件或目录。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值