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



我已经将我的应用程序部署为Liferay上的porlet,现在我需要在执行业务逻辑的同时执行会话管理(在servlet中)。假设我已经在救生筏上部署了servlet。

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

为了创建整个portlet上下文,您必须模拟Liferay所做的一切。IMHO对于你给出的场景来说,这是不值得的。将servlet代码添加到portlet中有什么问题,在portlet中您拥有所有这些上下文?

您不能真正将servlet"部署到Liferay中"-您的servlet可能与Liferay在同一个应用程序服务器上运行,但当您查看HttpServletRequest的目标时,您会发现servlet请求的目标是servlet的web应用程序,该应用程序是故意与Liferay分离的,Liferay是一个完全不同且不相关的应用程序。当您查看portlet请求时,它会被定向到Liferay,然后在内部转发到另一个web应用程序中的portlet。所有这些都已经得到了很好的实施,IMHO不值得追求。应用服务器会拒绝向您提供来自另一个网络应用程序的所有数据。

还有其他解决方案,但与将servlet代码移动到portlet中相比,它们似乎都非常复杂,我会等待更多关于为什么您肯定需要继续使用此实现的论点,然后再提及它们。

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

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

User urs = td.getUser();

根据建议,在liferay中,您应该编写portlet而不是servlet。

最新更新