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