调用request.getRemoteUser时获取数字userId

时间:2013-09-26 09:44:13

标签: java liferay portlet portal

所以这就是我要做的事情:

我正试图从一个liferay主题调用一个servlet / controller(无论我能先做什么)。

这是我做的:  我创建了一个名为XController的控制器,然后使用:

生成一个url来调用它
#set ($embeddedPortletURL = $portletURLFactory.create($request, "workspace_WAR_xportlet", $page.plid, "RESOURCE_PHASE"))
<input id="workspaceSearchUrl" value="${embeddedPortletURL}" type="hidden">

然后,对于ajax调用,我使用$("#workspaceSearchUrl").val() + "&p_p_mode=view&p_p_resource_id=doSomething"作为url。 我能够调用portlet没问题,但每当我调用portletRequest.getRemoteUser()时,我得到一个“2203”的userId而不是登录用户。

那么......我究竟做错了什么?为什么getRemoteUser方法会给我一个数字?

编辑: 为了清楚起见,对其他控制器的其他ajax调用返回有效的用户ID(文本)。

我也尝试调用servlet,但是调用getRemoteUser会返回null。我想这意味着servlet不与门户共享会话?

2 个答案:

答案 0 :(得分:1)

如果可以,请尝试使用

User currentUser = PortalUtil.getUser(portletRequest);
long userId = currentUser.getUserId();

答案 1 :(得分:0)

您可以通过userId获取这样的用户对象。

User user = UserLocalServiceUtil.getUser(userId);

String name = user.getFirstname();