限制对web.config中文件/文件夹的访问

时间:2017-06-14 06:05:50

标签: asp.net asp.net-mvc iis web-config

我试图限制对文件夹的访问,尝试各种各样的变体,最简单的拒绝访问所有用户,只是授予自己访问权限以尝试组合角色/用户等。特别是该文件夹包含aspx和html文件。

有人可以帮忙吗?这基于其他类似的问题,我的基本情况如下:

<configuration>
    <system.web>
       <!-- mode=[Windows|Forms|Passport|None] -->
       <authentication mode="Windows" />
    </system.web>
  <system.webServer>
    <handlers>
        <add name="HTMLHandler" type="System.Web.StaticFileHandler" path="*.html" verb="GET" />
    </handlers>
  </system.webServer>
    <location path="AdminOnly">
        <system.web>
            <authorization>
            <deny users="*" />
            <allow users="domain\user1, domain\user2, domain\user3" />
            <allow roles="domain\role1, domain\role2" />
            </authorization>
        </system.web>
    </location>
</configuration>

修改 最终提出了解决方案。

这是理解授权段的组合(感谢Tetsuya有关订购授权规则的有用提示),包括处理程序段以及为托管代码配置应用程序池。

2 个答案:

答案 0 :(得分:2)

似乎你在撰写authorization元素时订单错误,必须首先声明allow部分,以允许特定用户担任某些角色,然后拒绝其他所有用户。

因此,下面的结构是错误的,因为在允许定义的用户之前拒绝所有用户解决:

<location path="AdminOnly">
    <system.web>
        <authorization>
        <deny users="*" />
        <allow users="domain\user1, domain\user2, domain\user3" />
        <allow roles="domain\role1, domain\role2" />
        </authorization>
    </system.web>
</location> 

正确的顺序应该是这样的:

<location path="AdminOnly">
    <system.web>
        <authorization>
        <allow roles="role1, role2" />
        <allow users="user1, user2, user3" />
        <deny users="*" />
        </authorization>
    </system.web>
</location>

在参考部分,Guru Sarkar解释了出了什么问题:

  

常见错误

     

我看到有人抱怨说他们已经设定了自己的角色   正确并且还进入了他们的web.config但仍然是他们的   授权不起作用。即使他们允许访问他们的   用户无法访问特定页面/文件夹的角色。常见的原因   为此,<deny../>放在<allow ../>之前。由于授权是从上到下完成的,因此会检查规则,直到找到匹配项。

参考:

Setting authorization rules for a particular page or folder in web.config

答案 1 :(得分:1)

您是否可以尝试在特定文件夹中创建新的web.config并将其添加到文件夹的web.config中以限制所有用户

<?xml version="1.0"?>
<configuration>
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
</configuration>