2010-06-25 134 views
0

我想在ASP.NET应用程序中设置授权权限。ASP.NET授权设置

因此,在一个特定的文件夹中,我想拒绝某个特定用户访问哪个用户角色被授予允许该特定用户角色。

<authorization> 
      <allow roles="General" /> 
      <allow roles="Sale" /> 
      <allow roles="Administrator" /> 
      <deny users="admin_test" /> 
</authorization> 

然而,当我试图通过使用admin_test帐户,系统访问从该特定文件夹的网页让我来访问,而不是拒绝访问的页面。

任何人都可以指出上述配置有什么问题吗?

任何帮助将不胜感激。

问候,

回答

2

你需要有deny首先列出。授权引擎将stop on the first matching rule

在运行时,通过授权模块迭代的允许和拒绝元素,从最高的本地配置文件,直到授权模块发现适合特定用户帐户的第一个访问规则。然后,授权模块根据所发现的第一访问规则是允许规则还是拒绝规则来授予或拒绝对URL资源的访问。包含在应用程序级 配置文件优先 在继承的规则

规则:

0

根据http://msdn.microsoft.com/en-us/library/wce3kxhd.aspx

规则应用如下。系统 通过构建URL的所有 规则的合并列表来确定哪个规则优先于 ,并且最近的 规则(层次结构中最接近的那些) 位于列表的开头。

鉴于一个 应用一组规则合并,ASP.NET开始在列表的 头,直到找到第一个匹配检查规则 。 ASP.NET 的 默认配置包含授权所有用户的元素 。 (默认为 ,最后应用此规则。) 如果没有其他授权规则匹配,则允许请求 。如果找到匹配项 ,并且匹配项是拒绝元素,则 请求将返回401 HTTP状态码。如果允许元素 匹配,则该模块允许进一步处理请求 。

因此,如果admin_test用户处于General,Sale,Administrator角色中的任何一个,它将首先匹配并允许访问。尝试在允许规则之前放置拒绝规则。