【问题标题】:Get current user in Liferay using java code使用 java 代码获取 Liferay 中的当前用户
【发布时间】:2012-05-27 21:11:59
【问题描述】:

如何在java中获取当前Liferay用户:

我发现了这个: How can I get the current user in Liferay? 和这个: Get the current user Liferay using a simple Java code

但是有人告诉如何初始化“请求”

连这个文件http://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/understanding-the-two-phases-of-portlet-execution 好像也很复杂

【问题讨论】:

    标签: java authentication liferay vaadin


    【解决方案1】:

    我一直在使用 Vaadin 6.8.0 和 Liferay 6.1。这是使用 Henri Kerola 解决方案的一些不同的代码:

        @Override
    public void onRequestStart(PortletRequest request, PortletResponse response) {
        try {
            this.setUser(request.getUserPrincipal().getName());
        } catch (Exception e) {
            this.setUser("anonymous");
        }
    }
    

    其中用户属性是 Vaadin 标签。由于匿名用户(来自 Liferay 的客人)的 getUserPrincipal nullPointer,try/catch 是必要的。

    最好的问候,

    【讨论】:

      【解决方案2】:

      让你的 Vaadin 应用实现com.vaadin.terminal.gwt.server.PortletRequestListener,然后你就可以访问请求了:

      public class MyApp extends Application implements PortletRequestListener {
      
          public void init() {
          …
          }
      
      
          @Override
          public void onRequestStart(PortletRequest request, PortletResponse response) {
              User user = PortalUtil.getUser(request);
              setUser(user);
          }
      
          @Override
          public void onRequestEnd(PortletRequest request, PortletResponse response) {
      
          }
      }
      

      【讨论】:

      • 在您的代码中,用户是本地用户,因此在您的方法之外不可用。您应该添加对 this.setUser(user) 的调用,以便稍后通过简单的 getUser 获得数据...
      【解决方案3】:

      您是否尝试在您的 Vaadin Portlet(应用程序)中使用方法:getUser()

      Vaadin Portlet 使用 Vaadin 特定框架包装了 Liferay API。因此 Vaadin Portlet 的开发有自己的规范,标准的 Liferay API 在这里并不简单。

      【讨论】:

        【解决方案4】:

        请求对象可用作操作或渲染方法以及 jsps 中的参数。您不需要对其进行初始化,它就在那里(参见例如 processAction(ActionRequest request, ActionResponse response) 的参数,渲染阶段、事件阶段和资源阶段也是如此(尽管与请求/响应的子类型不同) )。

        【讨论】:

        • 当我尝试这个时:ActionRequest request = null; String userId = request.getRemoteUser();我得到 NullPointerException 我需要一个代码示例!
        • class YourPortlet extends GenericPortlet { void processAction(ActionRequest request, ActionResponse response) { User currentUser = PortalUtil.getUser(request); ... } }
        • 在调用 processAction 函数时,我应该将哪些参数作为请求和响应传递?因为当将它们声明为局部变量时,它希望我初始化变量
        • 当在您的门户上触​​发操作时,门户会调用它。你自己不这么叫。无意冒犯,但您似乎需要更多门户开发的基本知识,或者我们需要在您的问题中提供有关手头问题的更详细信息。
        • 是的,我对门户开发一无所知。事实上,我正在开发一个基于 vaadin 的 liferay portlet,它允许远程管理 Jenkins 作业,当应用程序开始使用这些参数进行 jenkins 身份验证时,我需要获取 Liferay 当前用户
        猜你喜欢
        • 2012-05-13
        • 2012-05-18
        • 2012-04-03
        • 2018-06-01
        • 2010-10-24
        • 1970-01-01
        • 2020-03-29
        • 1970-01-01
        • 2013-03-28
        相关资源
        最近更新 更多