ASP.Net中的IIS URL授权检查

时间:2014-08-04 20:20:50

标签: asp.net iis authorization iis-7.5 asp.net-authorization

我有一个在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阶段处理。

1 个答案:

答案 0 :(得分: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中,你为什么不愿意在代码中使用它?

另一种检查方法是:

Context.User.IsInRole("somerole")