1

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

4

1 回答 1

1

看看这个:http: //msdn.microsoft.com/en-us/library/system.web.security.urlauthorizationmodule.checkurlaccessforprincipal.aspx

此处引用: 确定用户是否可以访问请求的页面?

UrlAuthorizationModule.CheckUrlAccessForPrincipal要求设置授权规则<system.web><authorization>

但是,如果您将其引入您的 web.config 中 - 为什么您不愿意在代码中使用它?

另一种检查方法是:

Context.User.IsInRole("somerole")
于 2014-08-04T20:40:35.667 回答