ASP.NET Web窗体授权允许匿名用户访问特定页面

时间:2016-02-25 10:30:32

标签: asp.net webforms web-config authorization forms-authentication

我正在使用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的答案表明我所做的是正确的。但它似乎并不适合我。那么为什么会这样呢?当我尝试访问页面时,有没有办法找出阻止访问的设置?有什么我想念的吗?

1 个答案:

答案 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中进行了测试。