首页 文章

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

提问于
浏览
0

我正在使用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的所有规则的合并列表来确定哪个规则优先,其中最新规则(层次结构中最接近的规则)位于列表的开头 . (链接)

How can I deny anonymous access to all pages but those that I specify?

这个question的答案表明我所做的是正确的 . 但它似乎对我不起作用 . 那么为什么会这样呢?当我尝试访问页面时,有没有办法找出阻止访问的设置?有什么我想念的吗?

1 回答

  • 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中测试 .

相关问题