【问题标题】:Getting a numeric userId when calling request.getRemoteUser调用 request.getRemoteUser 时获取数字 userId
【发布时间】:2013-09-26 09:44:12
【问题描述】:

这就是我想要做的:

我正在尝试从 liferay 主题调用 servlet/控制器(无论我可以先开始工作)。

这是我所做的: 我制作了一个名为 XController 的控制器,然后生成了一个 url 来调用它:

#set ($embeddedPortletURL = $portletURLFactory.create($request, "workspace_WAR_xportlet", $page.plid, "RESOURCE_PHASE"))
<input id="workspaceSearchUrl" value="${embeddedPortletURL}" type="hidden">

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

那么...我到底做错了什么?为什么 getRemoteUser 方法会返回一个数字?

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

我也尝试调用一个 servlet,但是调用 getRemoteUser 返回一个空值。我猜这意味着 servlet 不与门户共享会话?

【问题讨论】:

    标签: java liferay portlet portal


    【解决方案1】:

    如果可以,请尝试使用

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

    【讨论】:

    • +1 我的问题是“request.getRemoteUser() 中的数字是什么意思?”。看起来它实际上是保存在liferay数据库中的userId。我需要的是登录名。但是感谢您的建议,我能够通过获取用户类来检索登录名。
    • UserId 是 user_ 表中的 Id。从 userId 您可以使用以下方法获取登录用户名。
    【解决方案2】:

    你可以像这样通过 userId 获取用户对象。

    User user = UserLocalServiceUtil.getUser(userId);
    
    String name = user.getFirstname();
    

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 2014-08-27
      • 2022-01-28
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 2021-08-11
      • 1970-01-01
      相关资源
      最近更新 更多