如何使用 javascript 在 Liferay 中检索用户个人资料图片

Posted

技术标签:

【中文标题】如何使用 javascript 在 Liferay 中检索用户个人资料图片【英文标题】:How to retrieve a user profile picture in Liferay with javascript 【发布时间】:2020-08-15 00:21:44 【问题描述】:

我正在尝试使用 javascript 获取用户个人资料图片

  Liferay.Service('/user/get-user-by-screen-name',
    companyId: Liferay.ThemeDisplay.getCompanyId(),
    screenName: 'marcio.sena'
  ,
  function(user) 
    console.log(user)
    var url = '/image/user_portrait?img_id='+user.portraitId+'&&img_id_token=???????'
  
);

如何使用 javascript 获取 img_id_token

【问题讨论】:

【参考方案1】:

不是您问题的完整答案,但可能会让您走上正确的道路:

(免责声明:我在这里使用的是 7.2 源代码,即使您标记了 Liferay 6,但您可以在与您的版本匹配的源代码上重复这些操作。为了便于阅读,我缩短了路径并删除了几行)

me@here:/..../liferay-dxp-7.2.10.1-sp1/src$ grep -r -5 img_id_token .
..../WebServerServlet.java-
..../WebServerServlet.java-           if (_userFileUploadsSettings.isImageCheckToken() && (imageId > 0)) 
..../WebServerServlet.java-                   String imageIdToken = ParamUtil.getString(
..../WebServerServlet.java:                           httpServletRequest, "img_id_token");
..../WebServerServlet.java-
..../WebServerServlet.java-                   if (user == null) 
..../WebServerServlet.java-                           user = UserLocalServiceUtil.fetchUserByPortraitId(imageId);
--
..../UserConstants.java-         if (_userFileUploadsSettings.isImageCheckToken()) 
..../UserConstants.java:                 sb.append("&img_id_token=");
..../UserConstants.java-                 sb.append(URLCodec.encodeURL(DigesterUtil.digest(userUuid)));
..../UserConstants.java-         

me@here:/..../liferay-dxp-7.2.10.1-sp1/src$ grep -r -5 imageIdToken .
..../WebServerServlet.java-
..../WebServerServlet.java-           if (_userFileUploadsSettings.isImageCheckToken() && (imageId > 0)) 
..../WebServerServlet.java:                   String imageIdToken = ParamUtil.getString(
..../WebServerServlet.java-                           httpServletRequest, "img_id_token");
..../WebServerServlet.java-                   
..../WebServerServlet.java-
..../WebServerServlet.java-                   if ((user != null) &&
..../WebServerServlet.java:                           !imageIdToken.equals(DigesterUtil.digest(user.getUserUuid()))) 
..../WebServerServlet.java-
..../WebServerServlet.java-                           return 0;

外卖:

令牌是可配置的 这是 UUID 的摘要

它的生成方式让我怀疑它可能在 JS 端并不容易获得(无需寻找),但模仿摘要,您可以自己创建它。 p>

【讨论】:

以上是关于如何使用 javascript 在 Liferay 中检索用户个人资料图片的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 liferay7 中覆盖 liferay 模块?

Liferay:如何配置 Liferay 门户

如何使用管理员 Liferay 将我的自定义 portlet 拖/添加到 liferay 页面?

如何在网络表单 Liferay 7 中支持文件上传?

Liferay 7.3:如何预配置嵌入在页面片段中的 portlet?

如何从 Liferay 7 取消部署 portlet?