允许所有用户在liferay中模拟任何用户

时间:2014-06-16 20:10:32

标签: liferay liferay-6 user-administration

我有一个要求,我必须允许所有常规用户冒充他们选择的用户。

我无法完成这项工作。这就是我到目前为止所做的:

  1. 在portal-ext.properties中添加了以下属性:

    portal.jaas.enable=false
    portal.impersonation.enable=true
    
  2. 为了模仿而创建了一个角色

  3. 此新角色的已定义权限:Portal>用户和组织>查看&模拟
  4. 将此角色分配给非管理员用户(用户A)
  5. 我不需要我的用户查看他们可以模拟的用户列表,我只是希望liferay冒充用户,如果网址中存在?doAsUserId=x(如果您是管理员,则会有效)。

    当我尝试使用用户A模拟用户B时,没有任何反应。我在tomcat日志中收到此错误:

    1ERROR [http-bio-8180-exec-85][PortalImpl:5990] User 80413 does not have the permission to impersonate 25105
    

    (用户80413是我的用户A,试图冒充用户B的用户[25105])

    我错过了其他什么吗?

1 个答案:

答案 0 :(得分:1)

Lifeary中存在一个条件,它会检查模仿组织列表中的权限。因此,模仿其他用户的用户必须拥有"模仿"在这些用户所属的所有组织中。

if (doAsUser.isDefaultUser() ||
        UserPermissionUtil.contains(
            permissionChecker, doAsUserId, organizationIds,
            ActionKeys.IMPERSONATE)) {

        request.setAttribute(WebKeys.USER_ID, new Long(doAsUserId));

        return doAsUserId;
    }

因此,这两个用户必须属于同一个组织,并且必须拥有该组织的模拟权限。