【问题标题】:ASP.NET Forms Authorization not working for per page setupASP.NET 表单授权不适用于每页设置
【发布时间】:2013-05-22 13:57:00
【问题描述】:

我正在构建一个 webforms 应用程序,将页面分隔到文件夹中,使用 web.config 授权这些文件夹中的网页,仅将页面授权给经过身份验证的用户,并允许某些页面具有某些角色。

我有一个“beheer”文件夹,page1.aspx - page6.aspx 位于其中。我在该文件夹中也有一个 web.config,如下所示。

我以具有“管理员”角色的用户身份登录系统,这意味着我应该可以使用所有页面,如果我转到第 3、第 4、第 5 或第 6 页,它工作得很好,但是去到 page1 或 page2 它不起作用,我收到未经授权的消息,即使 page2 和 page3。我似乎无法弄清楚我错过了什么。

<configuration>
  <system.web>
    <authorization>
      <deny users="?" />
      <!-- Deny all unauthenticated users -->
    </authorization>
  </system.web>

  <location path="Page1.aspx" >
    <system.web>
      <authorization>
        <allow roles="Page1,Admin,UserAdmin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

  <location path="Page2.aspx" >
    <system.web>
      <authorization>
        <allow roles="Page3,Admin,UserAdmin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

  <location path="Page3.aspx" >
    <system.web>
      <authorization>
        <allow roles="Page3,Admin,UserAdmin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

  <location path="Page4.aspx,Page5.aspx,Page6.aspx" >
    <system.web>
      <authorization>
        <allow roles="Admin,UserAdmin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

</configuration>

【问题讨论】:

  • 所有页面是否都位于同一个文件夹中?
  • 是的,都在同一个子文件夹中

标签: asp.net forms-authentication


【解决方案1】:

我怀疑您实际上分配了管理员角色。这部分似乎是错误的:

<location path="Page4.aspx,Page5.aspx,Page6.aspx" >
    <system.web>
      <authorization>
        <allow roles="Admin,UserAdmin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
</location>

您不能在路径元素上指定多个资源。请参阅here 了解更多信息。

试着改成这样:

<location path="Page4.aspx" >
    <system.web>
      <authorization>
        <allow roles="Admin,UserAdmin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
</location>
<location path="Page5.aspx" >
    <system.web>
      <authorization>
        <allow roles="Admin,UserAdmin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
</location>
<location path="Page6.aspx" >
    <system.web>
      <authorization>
        <allow roles="Admin,UserAdmin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
</location>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2020-08-27
    • 2010-09-06
    • 2014-10-28
    • 1970-01-01
    • 2016-11-22
    相关资源
    最近更新 更多