我有一个在IIS 7下运行的ASP.Net Web表单应用程序整个应用程序目前使用Windows身份验证和URL授权进行保护,通过IIS在web.config中配置 . .NET不关心用户是谁,目前没有配置文件或角色或任何东西 .
<system.web>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Allow" roles="AppXUsers" />
<deny users ="?" />
</authorization>
</system.web>
我希望添加一个额外的页面(在一个子文件夹中),用户子集可以访问,所以我会像这样修改web.config:
<location path="mySubFolder">
<system.web>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Allow" roles="AppXPowerUsers" />
<deny users ="?" />
</authorization>
</system.web>
</location>
客户可以随意添加或删除AD组,因为他们认为合适 . 但是,因为它位于AppXUsers组中但不在AppXPowerUsers组中的用户仍会显示指向mySubFolder中页面的链接 . 当他们点击链接时,他们会获得拒绝访问权限 .
有什么方法可以检测当前用户是否可以访问“mySubFolder”?
我觉得在这个阶段引入User / RoleManagement有点矫枉过正 - 应用程序不需要存储任何与用户相关的信息,也不关心用户是谁“他们是否可以访问此页面”,目前在IIS阶段处理 .
1 回答
看看这个:http://msdn.microsoft.com/en-us/library/system.web.security.urlauthorizationmodule.checkurlaccessforprincipal.aspx
在这里引用:Determine if user can access the requested page?
UrlAuthorizationModule.CheckUrlAccessForPrincipal
要求在<system.web><authorization>
中设置授权规则如果你在web.config中引入它,你为什么不愿意在代码中使用它?
另一种检查方法是: