我正在尝试以编程方式为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对此有限制吗?
答案 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;
}
可能是刷新用户从缓存中刷新它的调用。