ASP.NET 授权

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

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

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

<[element] [users] [roles] [verbs]/>

element 是必需的。必须包含 usersroles 属性。也可同时包含两个,但包含两个并不是必需的。verbs 属性是可选的。

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

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

也拒绝匿名用户。

下例将访问权限授予 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>

使用下面的启发式方法来应用规则:

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



相关主题


© 1997-2003 Microsoft Corporation。保留所有权利