我想在ASP.NET应用程序中设置授权权限。
因此,在一个特定文件夹中,我想拒绝某个特定用户访问哪个用户角色被允许为该特定用户。
<authorization>
<allow roles="General" />
<allow roles="Sale" />
<allow roles="Administrator" />
<deny users="admin_test" />
</authorization>
但是,当我尝试使用admin_test帐户访问该特定文件夹中的页面时,系统允许我访问该页面而不是拒绝访问。
有人能说出上述配置有什么问题吗?
非常感谢任何帮助。
此致
冉
答案 0 :(得分:3)
您需要先列出deny
。授权引擎将stop on the first matching rule:
在运行时,授权模块从最本地配置文件开始迭代allow和deny元素,直到授权模块找到适合特定用户帐户的第一个访问规则。然后,授权模块根据所找到的第一个访问规则是允许还是拒绝规则,授予或拒绝访问URL资源。
答案 1 :(得分:1)
根据http://msdn.microsoft.com/en-us/library/wce3kxhd.aspx
规则如下:
应用程序级别中包含的规则 配置文件优先 过继承的规则。系统 确定哪个规则优先 通过构建所有的合并列表 最新的URL规则 规则(最接近层次结构的规则) 在列表的头部。
给出一组合并规则 应用程序,ASP.NET开始于 列表和检查规则的负责人 直到找到第一场比赛。该 ASP.NET的默认配置 包含一个元素, 授权所有用户。 (通过 默认情况下,此规则最后应用。) 如果没有其他授权规则匹配, 请求是允许的。如果匹配 发现并且匹配是一个拒绝元素, 请求与401一起返回 HTTP状态代码。如果是允许元素 匹配,模块允许请求 进一步处理。
因此,如果admin_test用户处于常规,销售,管理员角色中的任何一个,则它将首先匹配并允许访问。尝试在允许规则之前放置拒绝规则。