【问题标题】:ASP.NET Web Forms Authorization allow access for anonymous user to specific pagesASP.NET Web 表单授权允许匿名用户访问特定页面
【发布时间】:2016-02-25 10:30:31
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

显然限制较少的文件不能在限制目录中。 但是,对限制较少的目录也可以这样做。

我最终使用以下 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 中测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 2012-12-20
    • 2011-06-23
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多