DNN 检查用户是不是在角色组中
Posted
技术标签:
【中文标题】DNN 检查用户是不是在角色组中【英文标题】:DNN Check if User is in Role GroupDNN 检查用户是否在角色组中 【发布时间】:2012-07-28 04:41:49 【问题描述】:我在我的 DNN 模块中添加了一项检查,以排除某些用户在登录时必须回答一些问题。我不想对每个单独的角色进行硬编码,而是只排除特定角色组中的任何人。这样,如果我们将来有更多角色,我们可以将它们添加到角色组中,如果我们希望它们被排除在外。
但是,我不知道您如何检查用户是否在角色组中。我知道如何检查角色,但不知道是否在一个组中。
解决方案:这是我根据得到的答案汇总的代码。应该可以。
RoleGroupInfo RoleGrp = RoleController.GetRoleGroupByName(this.PortalId, "Role Group");
bool bShouldSkipQuestions = false;
if (RoleGrp != null)
Dictionary<string, RoleInfo> GroupChk = RoleGrp.Roles;
if (GroupChk.Count > 0)
foreach (var item in GroupChk.Values)
if (_user.IsInRole(item.RoleName))
bShouldSkipQuestions = true;
break;
【问题讨论】:
【参考方案1】:角色组并不是真的打算这样使用(它们仅用于最终用户组织),因此没有直接的方法来检查这一点。您需要获取组中的所有角色 (RoleController.GetRolesByRoleGroup
),然后检查 PortalSecurity.IsInRoles
,传入以逗号分隔的角色名称字符串。
试试这个代码:
var roleGroup = RoleController.GetRoleGroupByName(this.PortalId, "Role Group");
var shouldSkipQuestions = roleGroup != null
&& roleGroup.Roles.Keys.Any(role => _user.IsInRole(role));
【讨论】:
这看起来可行。将对其进行测试,然后将我的代码添加到我的问题中,以便其他人可以看到我的方法。 我也会检查roleGroup.Roles != null
。
Roles
是一个属性,如果支持字段是null
,它会自行初始化。不应该出现属性本身为null
的情况。以上是关于DNN 检查用户是不是在角色组中的主要内容,如果未能解决你的问题,请参考以下文章
使用 Power Automate 检查 Office 365 组中是不是存在 Teams/SharePoint 用户