ASP.NET授权继承规则

时间:2011-06-30 07:18:00

标签: asp.net iis-7 web-config authorization

我正在尝试保护我的ASP.NET网站中包含文件(视频,文档等)的(子)目录。所以我创建了一个Web.config文件:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <deny users="?"/>
      <allow roles="Administrator"/>
      <allow roles="Author"/>
      <allow roles="Report"/>
    </authorization>
  </system.web>
</configuration>

这些角色与我数据库中asp.net角色表中定义的角色相对应。

我打开了IIS7以检查授权规则是否存在并且它们是否存在。但是还有2个继承的规则设置为“允许所有用户”。这些规则似乎覆盖了我在de Web.config中设置的规则。我无法删除这些继承的规则。

有没有办法禁用这些继承的授权规则,仅适用于我的子文件夹?

提前致谢!

3 个答案:

答案 0 :(得分:1)

在根目录的web.config中尝试以下

<location path=”MySite/SubDirectory” allowOverride=”false”>
    <system.web>
        <authorization>
            <allow users=”?” />
        </authorization>
    </system.web>
</location>

答案 1 :(得分:0)

尝试从ASP.NET配置中删除它们。在解决方案资源管理器(或Project \ Website-&gt; ASP.NET配置)的右上角用小图标打开它。

在ASP.NET配置中使用安全性 - &gt;访问规则 - &gt;管理相应文件夹的访问规则。

答案 2 :(得分:0)

Ť

是的,您可以使用您提到的.NET授权规则或在Web.Config文件中通过IIS管理器添加这些授权。但是,请记住,您必须在“拒绝”规则之前添加“允许”规则,因为拒绝始终覆盖相同的文件夹级别。优先顺序是:

Local Deny - being top priority
Local Allow
Inherited Deny
Inherited Allow

如果在同一文件夹级别的任何其他“本地允许”规则之前存在“本地拒绝”规则,则不会应用任何“允许”规则。例如,如果我的父目录Sales包含子文件夹ManagementCustomersSalesTeam,并且我为Sales定义了拒绝规则,那么必须在子目录中明确允许所有用户/角色。假设我也有与这些文件夹相匹配的角色,我会为每个文件夹定义一个允许规则到相应的文件夹,让他们可以访问其中的内容/页面。

我希望你觉得这很有用。我知道这是一个老问题。干杯;)