有两个用户;
具有systemAdmin
角色且不是powerUser
角色
具有powerUser
角色而非systemAdmin
角色
我在位于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
答案 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>
特定于页面的授权仅在存在两个位置标记时才有效。