已弃用的RoleController.GetUserRoles()的替换

时间:2013-03-13 15:09:53

标签: dotnetnuke

在DotNetNuke 7之前,可以使用以下方法获取用户所属角色的列表:

DotNetNuke.Security.Roles.RoleController rc = new DotNetNuke.Security.Roles.RoleController();

foreach (Entities.Users.UserRoleInfo roleInfo in rc.GetUserRoles(portalID, userID))
{
    string roleName = roleInfo.RoleName;
}

但是,自DNN7起,GetUserRoles函数已弃用。

这个功能有什么替代方案?

2 个答案:

答案 0 :(得分:7)

我无法在任何地方找到任何相关信息,因此我浏览了API并遇到了以下内容:

int portalID = PortalController.GetCurrentPortalSettings().PortalId;
DotNetNuke.Security.Roles.RoleController rc = new DotNetNuke.Security.Roles.RoleController();
Entities.Users.UserInfo info = DotNetNuke.Entities.Users.UserController.GetUserById(portalID, userID);

foreach (string roleName in info.Roles)
{
    Security.Roles.RoleInfo role = rc.GetRoleByName(portalID, roleName);
    Entities.Users.UserRoleInfo roleInfo = rc.GetUserRole(portalID, userID, role.RoleID);
}

这可以替代上面的代码,获取UserRoleInfo对象 - 如果是圆形的话!

答案 1 :(得分:1)

如果填充UserInfo对象,那里有一个Roles数组,列出了用户所在的所有角色。