如何在servlet(Portlet)中获取Liferay登录用户详细信息?

时间:2015-02-09 08:10:53

标签: session servlets liferay liferay-6 portlet

我已将我的应用程序部署为Liferay上的一个porlet,现在我需要在执行业务逻辑时执行会话管理(在servlet中)。 让我们说我已经将我的servlet部署在了liferay上。

我正在使用liferay 6.2,Tomcat 7,我在执行业务逻辑之前向servlet提交一个表单,我需要检查请求是否来自有效用户或不是。所以我需要获取用户身份验证的登录用户详细信息。如何在servlet中获取登录用户详细信息?有什么建议吗?

2 个答案:

答案 0 :(得分:2)

为了创建整个portlet上下文,你必须模仿Liferay所做的一切。恕我直言,对于你给予的场景,它不值得。将您的servlet代码添加到portlet的问题是什么?在这里您拥有所有这些上下文?

您无法在Servray"中真正部署servlet" - 您的servlet可能与Liferay在同一个应用程序服务器上运行,但是当您查看HttpServletRequest的目标时,您会看到servlet请求是针对您的servlet Web应用程序的,故意与Liferay分开 - 一个完全不同且无关的应用程序。当您查看portlet请求时,它会定向到Liferay,然后在内部转发到另一个Web应用程序中的portlet。所有这些都已经很好地实施,恕我直言不值得追求。应用程序服务器将拒绝向您提供来自其他Web应用程序的所有数据。

还有其他解决方案,但与将servlet代码移动到portlet相比,它们似乎都非常复杂,我等待更多的论据,为什么在提到它们之前你肯定需要继续使用这个实现。

答案 1 :(得分:1)

您可以使用以下代码登录用户:

ThemeDisplay td  =(ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

User urs = td.getUser();

建议在liferay中,你应该编写servlet的portlet。