【发布时间】:2012-01-23 13:02:13
【问题描述】:
关于 Web 表单的简单但难以解决的问题。
我在我的 Web 表单应用程序上强制执行基于角色的访问,但我想根据 WebForm 或 URL 来定制访问,例如
/Administration/* --> 只有管理员 /Users/* --> 管理员和用户 /* --> 也是匿名的
关于如何在 web.config 上执行此操作的任何提示?
谢谢你和最好的问候
【问题讨论】:
关于 Web 表单的简单但难以解决的问题。
我在我的 Web 表单应用程序上强制执行基于角色的访问,但我想根据 WebForm 或 URL 来定制访问,例如
/Administration/* --> 只有管理员 /Users/* --> 管理员和用户 /* --> 也是匿名的
关于如何在 web.config 上执行此操作的任何提示?
谢谢你和最好的问候
【问题讨论】:
<location path=”Admin”>
<authorization>
<allow roles=”Admin” />
<deny users=”*” />
<deny roles=”*” />
</authorization>
</location>
或在这里查看:http://support.microsoft.com/kb/316871 或 http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx
【讨论】:
最简单的方法是在每个子文件夹中创建本地 web.config 文件。这样的本地web.config 只会包含授权信息,以便内置的UriAuthorizationModule 可以为您完成其余的工作。
例如,在 /Admin 文件夹中创建一个 web.config
<configuration>
<system.web>
<authorization>
<allow roles="Admin" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
因此仅授予管理员用户访问权限。将相同的内容应用于其他子文件夹,您就完成了 - 在角色管理器存在并提供有关用户角色的信息的情况下。
在每个子文件夹中创建仅包含授权数据的本地 web.configs 可让您对授权进行细粒度控制。另一种方法是在主要的web.config 中提供此信息,但很快就会因为许多授权节点引用不同的位置而过载。
【讨论】: