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

How to get Liferay login user details in servlet(Portlet)?

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

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

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

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

User urs = td.getUser();

建议您在 liferay 中编写 portlet 而不是 servlet。

您必须模拟 Liferay 所做的一切才能创建整个 portlet 上下文。恕我直言,对于您提供的场景来说,这是不值得的。将您的 servlet 代码添加到您拥有所有这些上下文的 portlet 中有什么问题?

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

还有其他解决方案,但与将 servlet 代码移动到 portlet 相比,它们似乎都过于复杂,我会等待更多的论据,为什么您一定要坚持使用此实现,然后再提及它们。