ASP.NET Forms授权不起作用

时间:2013-05-22 13:57:00

标签: asp.net forms-authentication

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

我有一个'beheer'文件夹,其中包含page1.aspx - page6.aspx。我在该文件夹中也有一个web.config,如下所示。

我正在登录系统,因为用户有“管理员”角色,这意味着我可以使用所有页面,如果我转到第3页,第4页,第5页或第6页,它可以正常工作,但是to page1或page2它不起作用,即使是page2和page3,我收到了一条未经授权的消息。我似乎无法弄清楚我错过了什么。

感谢, Jurjen。

<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>

1 个答案:

答案 0 :(得分:1)

我怀疑你确实已经分配了Admin角色。这部分似乎错了:

<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>