使用java代码获取Liferay中的当前用户

时间:2012-05-21 11:06:56

标签: java authentication liferay vaadin

如何在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似乎也很复杂

4 个答案:

答案 0 :(得分:3)

让你的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) {

    }
}

答案 1 :(得分:1)

请求对象可用作action-或render-method以及jsps的参数。你不做它的初始化,它就在那里(参见例如processAction(ActionRequest请求,ActionResponse响应)的参数,渲染,事件和资源阶段也是如此(尽管与请求/响应的子类型不同) )。

答案 2 :(得分: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");
    }
}

其中user属性是Vaadin标签。 try / catch是必需的,因为匿名用户的getUserPrincipal nullPointer(来自Liferay的访客)。

最好的问候,

答案 3 :(得分:0)

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

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