gpt4 book ai didi

asp.net - 在 Web.config 授权中需要多个角色

转载 作者:行者123 更新时间:2023-12-04 08:17:45 25 4
gpt4 key购买 nike

是否可以在 web.config 文件的授权元素中指定需要多个角色?我目前在我的网站的一个 web.config 中有这个 block ,用于特定目录:

<authorization>  
<allow roles="Global, Region" />
<deny users="*" />
</authorization>

我刚刚确定了一种特殊情况,即拥有两个比 Global 和 Region 更低级别权限的人也应该有权访问此目录。粗略地说,我想要这样的东西:
<authorization>  
<allow roles="GlobalManager, RegionManager, SiteManager && FooSite" />
<deny users="*" />
</authorization>

有任何想法吗?我意识到我可能应该为这种情况扮演一个新角色,但我想避免这种情况。谢谢!

最佳答案

我不认为你可以通过 web.config 中允许的当前配置来做到这一点。你可以做的是类似以下的事情......作为你的Page_Load的第一行相关页面的事件,请使用以下代码(VB):

If Not (User.IsInRole("Role1") AndAlso User.IsInRole("Role2")) Then _
FormsAuthentication.RedirectToLoginPage()

这行当然是假设您正在使用 FormsAuthentication。如果没有,您需要更换 FormsAuthentication.RedirectToLoginPage()根据您的身份验证方法使用适当的代码。

我不完全了解您的情况,但是根据您的代码,您似乎可以更进一步,添加一个包含用户到站点映射的表,然后执行以下操作:

在公共(public)模块中,添加以下代码:
<System.Runtime.CompilerServices.Extension()> _
Public Function ManagesSite(target As System.Security.Principal.IPrincipal, siteName As String) As Boolean
Return [ code here to look up whether this user can access the site specified ]
End Function

然后你可以把前面的代码写成更合乎逻辑的东西,比如:
If Not (User.IsInRole("SiteManager") AndAlso User.ManagesSite(Request.Url.Host)) Then _
FormsAuthentication.RedirectToLoginPage()

关于asp.net - 在 Web.config 授权中需要多个角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2738394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com