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 用户

在关闭之前检查 Auto Scaling 组中的 EC2 实例是不是有任何用户在使用它

检查提到的用户是不是在 discord.js 中具有角色

如何检查未登录用户是不是有角色?

如何检查用户是不是在不和谐中扮演角色

如何检查用户是不是具有特定角色并因此允许某些操作?