我有一个要求,我必须允许所有常规用户冒充他们选择的用户。
我无法完成这项工作。这就是我到目前为止所做的:
在portal-ext.properties中添加了以下属性:
portal.jaas.enable=false
portal.impersonation.enable=true
为了模仿而创建了一个角色
我不需要我的用户查看他们可以模拟的用户列表,我只是希望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])
我错过了其他什么吗?
答案 0 :(得分:1)
Lifeary中存在一个条件,它会检查模仿组织列表中的权限。因此,模仿其他用户的用户必须拥有"模仿"在这些用户所属的所有组织中。
if (doAsUser.isDefaultUser() ||
UserPermissionUtil.contains(
permissionChecker, doAsUserId, organizationIds,
ActionKeys.IMPERSONATE)) {
request.setAttribute(WebKeys.USER_ID, new Long(doAsUserId));
return doAsUserId;
}
因此,这两个用户必须属于同一个组织,并且必须拥有该组织的模拟权限。