【问题标题】:Assigning multiple roles to user in DNN programmatically以编程方式为 DNN 中的用户分配多个角色
【发布时间】:2015-10-27 02:20:59
【问题描述】:

我正在尝试以编程方式为 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 这样做有什么限制吗?

【问题讨论】:

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


    【解决方案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;
    }
    

    也许是刷新用户的调用从缓存中刷新了它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      相关资源
      最近更新 更多