我正在使用ASP.NET Web窗体的表单身份验证,并且它成功验证了用户身份。
使用web.config中的这些授权设置,匿名用户只能访问“登录”页面。
<authorization>
<deny users="?" />
</authorization>
或
<location path="SubFolder">
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>
我正在尝试使用位置标记来进一步允许匿名访问其他页面,但忽略它们:
<location path="SubFolder/LoggedOut.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
在ASP.NET设置继承之后,位置标记中的授权标记应覆盖全局授权标记。
系统通过构建URL的所有规则的合并列表来确定哪个规则优先,其中最新规则(层次结构中最接近的规则)位于列表的开头。 (link)
如何拒绝对我指定的所有网页进行匿名访问?
这个question的答案表明我所做的是正确的。但它似乎并不适合我。那么为什么会这样呢?当我尝试访问页面时,有没有办法找出阻止访问的设置?有什么我想念的吗?
答案 0 :(得分:0)
显然,受限制较少的文件不能位于受限目录中。 但是,对限制较少的目录执行相同操作是可以的。
我最终使用以下web.config将公共文件放在子文件夹中,将所有安全文件放在子文件夹中:
...
<authorization>
<allow users="*" />
</authorization>
...
<location path="SubFolder">
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>
...
在.NET-Framework 4.5,Visual Studio Enterprise 2015中进行了测试。