【问题标题】:Accessing the user from a liferay portlet?从 liferay portlet 访问用户?
【发布时间】:2009-06-09 15:59:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: liferay portlet


    【解决方案1】:

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

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

    【讨论】:

    • Liferay 特定的服务是 UserServiceUtil
    • 从技术上讲,您可以使用portletRequest.getAttribute(PortletRequest.USER_INFO) 保持更多的门户独立性。这将返回可由每个门户实现定义的用户属性映射。有关 Liferay 的用户属性,请参阅 portlet-custom.xmlcom.liferay.portlet.UserAttributes。大多数情况下,用户属性名称是 portlet 规范推荐的名称。
    【解决方案2】:

    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 plugin 并通过扩展 UserLocalServiceWrapper 类来覆盖服务。然后检查密码更改并在您的自定义类中执行您的代码。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      或者你可以只使用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);
        }
      );
      

      【讨论】:

        【解决方案4】:

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

        User user = PortalUtil.getUser(portletRequest);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-02
          • 1970-01-01
          • 1970-01-01
          • 2020-04-03
          • 1970-01-01
          相关资源
          最近更新 更多