2017-06-14 77 views
0

我尝试了所有方式的变化,试图限制对文件夹的访问,从拒绝访问所有用户的最简单的方式,只是授予自己尝试组合角色/用户等。特别是,该文件夹混合了aspx和html文件。在web.config中限制对文件/文件夹的访问

任何人都可以协助吗?这几乎是我所根据其他类似的问题:

<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提供的有关订购授权规则的有用提示),包括处理程序段以及为托管代码配置应用程序池。

+0

你解决这个问题? – hasan

回答

1

你可以尝试在您的特定文件夹中创建新的web.config文件,并添加到该文件夹​​的web.config此限制所有用户

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

谢谢哈桑,是的,我确实从那里工作,所以这个作品 – mattpm

+0

欢迎您:)你能接受(标记)答案,如果它工作 – hasan

+0

它的工作原理,但它不是解决实际问题。 – mattpm

1

看来你在撰写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> 

在参考文献部分,大师Sarkar解释发生了什么问题:

常见错误

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

参考:

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

+0

感谢Tetsuya,很高兴知道/学习这些东西。 – mattpm

+0

这个问题似乎更多的是阻止访问目录中的html文件。只要我包含处理程序,不管我放在授权部分的内容如何,​​对html文件的访问都会被拒绝。 – mattpm

+0

将应用程序池更改为从无托管代码使用.Net版本4,现在按预期工作。 – mattpm