从liferay portlet访问用户?

我正在尝试开发liferay的portlet。

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

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


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

一旦你有了ID,你可以通过调用getUserById() (一个Liferay特定服务)来获取附加信息。 这是Portlet API规范未涵盖的内容,因此它会将您锁定到Liferay。


Liferay具体的东西,这里是一个代码示例,写在您的Portlet类中以检索用户:

ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(WebKeys.THEME_DISPLAY);

User user = themeDisplay.getRealUser(); // it gives you the actual Logged in User
//you can also use
// User user = themeDisplay.getUser(); // this would fetch the User you are impersonating 

long userId = user.getUserId();
String userName = user.getEmailAddress();

另外;

long userId = themeDisplay.getRealUserId(); // themeDisplay.getUserId();
User user = UserLocalServiceUtil.getUser(userId);

模拟用户:

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

在用户更改密码时执行代码:一种方法是创建一个hook插件并通过扩展UserLocalServiceWrapper类来覆盖服务。 然后检查密码更改并在您的自定义类中执行您的代码。

希望这可以帮助。


或者你可以使用javascript:

Liferay.ThemeDisplay.getUserId()

在Liferay命名空间中有很多不错的东西,请看看没有那么好记录的API:

  • https://www.liferay.com/community/wiki/-/wiki/Main/Liferay+JavaScript+API
  • https://www.liferay.com/web/pankaj.kathiriya/blog/-/blogs/usage-of-liferay-js-object
  • 另外,请查看localhost:8080 / api / jsonws下可用的JavaScript服务,您可以使用javascript调用该服务:

    Liferay.Service(
      '/user/get-user-by-id',
      {
        userId: 10199
      },
      function(obj) {
        console.log(obj);
      }
    );
    
    链接地址: http://www.djcxy.com/p/60149.html

    上一篇: Accessing the user from a liferay portlet?

    下一篇: Visual Studio 2010 XAML layout editor not WYSIWYG