我有一个在IIS 7+下运行的ASP.Net网络表单应用程序 整个应用程序目前使用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中页面的链接。当他们点击链接时,他们会获得拒绝访问权限。
有什么方法可以检测当前用户是否可以访问&#34; mySubFolder&#34;?
我觉得在这个阶段引入用户/角色管理会有点过分 - 应用程序不需要存储任何与用户相关的信息,也不关心用户是谁超出&#34; can他们是否访问此页面&#34;,目前在IIS阶段处理。
答案 0 :(得分:1)
在这里引用: Determine if user can access the requested page?
UrlAuthorizationModule.CheckUrlAccessForPrincipal
要求授权规则在<system.web><authorization>
如果你将这个介绍到你的web.config中,你为什么不愿意在代码中使用它?
另一种检查方法是:
Context.User.IsInRole("somerole")