asp.net授权规则无法按预期工作

时间:2018-04-11 08:57:49

标签: asp.net authorization

有两个用户;

具有systemAdmin角色且不是powerUser角色

的管理员

具有powerUser角色而非systemAdmin角色

的powerUser

我在位于Project \ SystemAdmin目录中的Web.config文件中有以下配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <!--Test Result: admin can access, powerUser is denied-->
  <location path="TestPowerUser.aspx">
    <system.web>
      <authorization>
        <allow roles="powerUser"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

  <!--Test Result: admin can access, powerUser is denied-->
  <location path="TestPowerUserDisallowSysAdmin.aspx">
    <system.web>
      <authorization>
        <allow roles="powerUser"/>
        <deny roles="systemAdmin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

  <!--Test Result: admin is denied, powerUser is denied-->
  <location path="TestDisallowAll.aspx">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

  <!--Test Result: admin can access, powerUser is denied for all other pages in directory-->
  <system.web>
    <authorization>
      <allow roles="systemAdmin"/>
      <deny users="*"/>
    </authorization>
  </system.web>

</configuration>

使用systemAdmin角色的管理员用户进行测试时

可以查看

TestPowerUser.aspx预期

可以查看

TestPowerUserDisallowSysAdmin.aspx意外

TestDisallowAll.aspx无法查看(预期

可以查看目录中的所有其他页面(预期

使用powerUser角色的powerUser用户进行测试时

无法查看

TestPowerUser.aspx意外

无法查看

TestPowerUserDisallowSysAdmin.aspx意外

TestDisallowAll.aspx无法查看(预期

目录中的所有其他页面都无法查看(预期

我能做错什么?我是asp.net开发的新手,并将更新可能要求的任何其他所需细节。

编辑:我尝试了以下回答的问题,仍未按预期工作。

ASP.NET Forms Auth Allowing access to specific file in subdirectory when all others should be denied

1 个答案:

答案 0 :(得分:0)

问题似乎是由文件扩展名引起的。每个文件需要有两个位置标记,一个带有文件扩展名,另一个没有文件扩展名。因此,对于TestPowerUser.aspx文件,位置标记应如下所示:

<location path="TestPowerUser.aspx"> <!--note the inclusion of the extension-->
  <system.web>
    <authorization>
      <allow roles="powerUser"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>
<location path="TestPowerUser"> <!--note the omission of the extension-->
  <system.web>
    <authorization>
      <allow roles="powerUser"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>

特定于页面的授权仅在存在两个位置标记时才有效。