以编程方式为DNN中的用户分配多个角色

时间:2015-10-27 02:21:00

标签: c# asp.net dotnetnuke dotnetnuke-7

我正在尝试以编程方式为DNN中的用户分配多个角色。

使用以下代码:

Roles_controller.AddUserRole(0, user_id, role_id, DateTime.Now, DateTime.Now.AddYears(10));
DotNetNuke.Common.Utilities.DataCache.ClearUserCache(0, user_name);
Roles_controller.ClearRoleCache(0);

问题是,无论我分配给用户的角色有多少,我实际只分配了我分配给用户的最后一个角色。之前为用户分配的角色被忽略了。抛出没有错误..

我怎样才能做到这一点? DNN对此有限制吗?

1 个答案:

答案 0 :(得分:1)

这是我为用户添加角色而编写的方法。它适用于我多次调用它,即使是在循环中。

public bool AddRoleToUser(int portalid, UserInfo user, string roleName, DateTime expiry)
{
    bool rc = false;
    if (user != null)
    {
        var roleCtl = new RoleController();
        RoleInfo newRole = roleCtl.GetRoleByName(portalid, roleName);
        if (newRole != null)
        {
            roleCtl.AddUserRole(portalid, user.UserID, newRole.RoleID, DateTime.MinValue, expiry);
            // Refresh user and check if role was added
            user = UserController.GetUserById(portalid, user.UserID);
            rc = user.IsInRole(roleName);
        }
    }
    return rc;
}

可能是刷新用户从缓存中刷新它的调用。