我的web.config中有一个location元素,如下所示:
<location path="Admin">
<system.web>
<authorization>
<allow roles="Domain\Development"/>
<deny users="*" />
</authorization>
</system.web>
</location>
这样只允许开发组的成员访问此文件夹。
我想知道是否有办法简单地测试用户是否有权访问此文件夹?
一种情况是创建菜单项。如果用户没有适当的权限,我只想隐藏或不显示此文件夹中页面的链接。
有没有办法在代码中执行此操作。我不想硬编码检查Domain \ Development中的成员资格而不是我想使用asp.net告诉我这个当前用户是否有访问权限。
如果规则变得更复杂等,这将是很好的。在一个地方有这个强制执行DRY(不要重复自己)。
答案 0 :(得分:2)
通过related question我找到了答案。致电UrlAuthorizationModule.CheckUrlAccessForPrincipal
。 (文档为here。)您可以为其指定路径和用户(例如当前用户的Page.User
),它会告诉您用户是否可以访问该路径。
我之所以喜欢这个,正是因为你提到的原因:你可以把你的访问逻辑放在一个地方。