2015-10-27 3 views
0

Я пытаюсь программным образом назначить несколько ролей пользователю в DNN.Назначение нескольких ролей пользователю в 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

Это метод, который я написал для добавления роли пользователю. Это работает для меня, чтобы называть его несколько раз, даже в цикле.

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; 
} 

Возможно, это был призыв обновить пользователя, который обновил его из кеша.

Смежные вопросы