从liferay portlet访问用户?

从liferay portlet访问用户?,liferay,portlet,Liferay,Portlet,我正在尝试为liferay开发一个portlet 如何访问当前登录用户的用户名和密码(以及liferay拥有的其他数据) 我还希望能够在用户更改密码时执行一些代码。您可以通过调用PortletRequest对象来获取用户ID。这是由JSR-168定义的,因此它是跨门户兼容的 获得ID后,您可以通过调用(Liferay特定的服务)获取附加信息。这是Portlet API规范未涵盖的内容,因此它将您锁定到Liferay。Liferay特定的内容,下面是一个代码示例,将在您的Portlet类中编写以检

我正在尝试为liferay开发一个portlet

如何访问当前登录用户的用户名和密码(以及liferay拥有的其他数据)


我还希望能够在用户更改密码时执行一些代码。

您可以通过调用
PortletRequest
对象来获取用户ID。这是由JSR-168定义的,因此它是跨门户兼容的


获得ID后,您可以通过调用(Liferay特定的服务)获取附加信息。这是Portlet API规范未涵盖的内容,因此它将您锁定到Liferay。

Liferay特定的内容,下面是一个代码示例,将在您的Portlet类中编写以检索用户:

ThemeDisplay-ThemeDisplay=(ThemeDisplay)portletRequest.getAttribute(WebKeys.THEME\u DISPLAY);
User User=主题显示。getRealUser();//它为您提供实际登录的用户
//你也可以使用
//User User=themeDisplay.getUser();//这将获取您正在模拟的用户
long userId=user.getUserId();
字符串userName=user.getEmailAddress();
或者

long userId=themeDisplay.getRealUserId();//themeDisplay.getUserId();
User User=UserLocalServiceUtil.getUser(userId);
模拟用户:

Liferay的概念是管理员(或具有正确权限集的人员)可以模拟门户的特定用户。通过这一点,他们可以看到门户对该用户的看法

用于在用户更改密码时执行代码: 一种方法是通过扩展UserLocalServiceWrapper类来创建和重写服务。然后检查密码更改并在自定义类中执行代码


希望这有帮助。

或者您可以使用javascript:

Liferay.ThemeDisplay.getUserId()
Liferay命名空间中有许多很好的应用程序,请看一看文档不太完整的API:

另外,看看localhost:8080/api/jsonws下可用的web服务,您可以通过javascript调用调用这些服务:

Liferay.Service(
  '/user/get-user-by-id',
  {
    userId: 10199
  },
  function(obj) {
    console.log(obj);
  }
);

在Liferay中获取用户的一种简单方法是PortalUtil.getUser函数

User user = PortalUtil.getUser(portletRequest);

Liferay特定的服务是UserServiceUtilTechnical,您可以通过使用
portletRequest.getAttribute(portletRequest.USER\u INFO)
来保持门户的独立性。这将返回可由每个门户实现定义的用户属性映射。有关liferay的用户属性,请参见
portlet custom.xml
com.liferay.portlet.UserAttributes
。在大多数情况下,用户属性名称是portlet规范推荐的名称。