0

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

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

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

    portal.jaas.enable=false
    portal.impersonation.enable=true
    
  2. 为模拟目的创建了一个角色

  3. 为这个新角色定义的权限:门户 > 用户和组织 > 查看和模拟
  4. 将此角色分配给非管理员用户(用户 A)

我不需要我的用户查看他们可以模拟的用户列表,我只想让 liferay 模拟用户(如果?doAsUserId=xURL 中存在)(如果您是管理员,这确实有效)。

当我尝试使用用户 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])

我还缺少其他东西吗?

4

1 回答 1

1

Lifeary 中有一个条件,它检查组织列表中的冒充权限。因此,冒充其他用户的用户必须在这些用户所属的所有组织中拥有“冒充”权限。

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

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

        return doAsUserId;
    }

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

于 2014-06-17T06:47:46.407 回答