Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DNN检查用户是否在角色组中_C#_Dotnetnuke_Roles - Fatal编程技术网

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

C# DNN检查用户是否在角色组中,c#,dotnetnuke,roles,C#,Dotnetnuke,Roles,我在我的DNN模块中添加了一个检查,以排除某些用户在登录时必须回答一些问题。我不想硬编码每个角色,而只想排除特定角色组中的任何人。这样,如果将来我们有更多的角色,如果我们想将其排除在外,我们可以将其添加到角色组中 但是,我不知道如何检查用户是否在角色组中。我知道如何检查角色,但如果他们在一个组中,我就不知道如何检查组 解决方案:以下是我根据得到的答案整理的代码。应该有用 RoleGroupInfo RoleGrp = RoleController.GetRoleGroupByName(this.

我在我的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;
            }
        }
    }
}
RoleGroupInfo RoleGrp=RoleController.GetRoleGroupByName(this.PortalId,“角色组”);
bool b shouldskipquestions=假;
if(RoleGrp!=null)
{
Dictionary GroupChk=RoleGrp.Roles;
如果(GroupChk.Count>0)
{
foreach(GroupChk.Values中的变量项)
{
if(_user.IsInRole(item.RoleName))
{
b shouldskipquestions=true;
打破
}
}
}
}

角色组实际上并不打算这样使用(它们只针对最终用户组织),因此没有直接的方法来检查。您需要获取组中的所有角色(
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
角色
是一个属性,如果支持字段为
null
,则该属性会自动初始化。属性本身不应该是
null