[英]Restrict access to file/folder in 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提供有关订购授权规则的有用提示),包括处理程序段以及为托管代码配置应用程序池。
似乎在编写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 ../>
之前。 由于授权是从上到下完成的 ,因此将检查规则直到找到匹配项。
参考:
您是否可以尝试在特定文件夹中创建新的web.config并将其添加到文件夹的web.config中以限制所有用户
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</configuration>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.