繁体   English   中英

DNN检查用户是否在角色组中

[英]DNN Check if User is in Role Group

我在我的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;
            }
        }
    }
}

角色组并不是真的打算那样使用(它们只是针对最终用户组织的),因此没有直接的方法来检查角色组。 您将希望获取组中的所有角色( RoleController.GetRolesByRoleGroup ),然后检查PortalSecurity.IsInRoles ,并传入以逗号分隔的角色名称字符串。

试试这个代码:

var roleGroup = RoleController.GetRoleGroupByName(this.PortalId, "Role Group");
var shouldSkipQuestions = roleGroup != null 
                          && roleGroup.Roles.Keys.Any(role => _user.IsInRole(role));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM