【问题标题】:Get RoleName from a RoleGroup by UserID通过 UserID 从 RoleGroup 获取 RoleName
【发布时间】:2016-11-24 15:36:36
【问题描述】:

我有一个RoleGroup,里面有一些Roles。一个用户只能属于这些角色之一。如何根据用户所属的RoleGroup 获得RoleName?有什么想法吗?

Dim roleGroupOmniProfiles = RoleController.GetRoleGroupByName(PortalSettings.Current.PortalId, "OmniProfiles")

问题来了

Dim omniProfile = roleGroupOmniProfiles.Roles.Any(Function(role) oUser.UserID)

【问题讨论】:

    标签: dotnetnuke dotnetnuke-8


    【解决方案1】:

    roleGroupOmniProfiles 包含KeyValuePair<string, RoleInfo> 的集合,因此您可以如下所示循环它们。

    但我不确定您是否可以通过UserIDRoleGroup 获得RoleName,因为UserID 没有直接链接到RoleGroup。不应该是你根据UserID从一个用户那里得到所有的Roles,然后检查Roles属于哪个RoleGroup,如果有的话。

    C#

    var roleGroupOmniProfiles = RoleController.GetRoleGroupByName(PortalId, "OmniProfiles");
    
    if (roleGroupOmniProfiles != null)
    {
        foreach (KeyValuePair<string, RoleInfo> role in roleGroupOmniProfiles.Roles)
        {
            Label1.Text += role.Key + " | " + role.Value.RoleName + "<br>";
        }
    }
    

    或单线

    RoleInfo roleInfo = roleGroupOmniProfiles.Roles.Where(x => x.Value.RoleID == 15).FirstOrDefault().Value;
    

    VB

    If (Not (roleGroupOmniProfiles) Is Nothing) Then
        For Each role As KeyValuePair(Of String, RoleInfo) In roleGroupOmniProfiles.Roles
            Label1.Text += role.Key + " | " + role.Value.RoleName + "<br>"
        Next
    End If
    

    更新

    要检查用户是否属于某个组,您可以使用它

    DotNetNuke.Entities.Users.UserInfo user = DotNetNuke.Entities.Users.UserController.GetUserByName("userName");
    bool isInGroup = roleGroupOmniProfiles.Roles.Keys.Any(role => user.IsInRole(role)); 
    

    【讨论】:

    • 抱歉,我注意到有一个错误。我检查了 vb.net 版本。即使用户不属于 RoleGroup 中的任何角色,循环也会返回 roleGroup 的最后一个值。
    • 没有错误,因为 VB 和 C# sn-p 不对用户做任何事情。他们只是在角色组集合中循环角色。在循环中,您可以检查UserInfo.IsInRole 并在找到时返回一个布尔值,但这取决于您的实现......如果需要,我可以提供完整的解决方案
    • 我想我可能搞砸了这个问题。我的意思是从某个角色组中获取用户所属的角色。我是根据你的建议这样做的。您认为这是优化的解决方案还是有更快的方法通过 linq 实现这一目标? For Each role As KeyValuePair(Of String, RoleInfo) In oRoleGroupInfo.Roles If oUser.IsInRole(role.Value.RoleName) Then oRoleAndPhoto.RoleName = role.Value.RoleName oRoleAndPhoto.RolePhotoURL = role.Value.PhotoURL End If Next
    猜你喜欢
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多