我已将我的应用程序部署为Liferay上的一个porlet,现在我需要在执行业务逻辑时执行会话管理(在servlet中)。 让我们说我已经将我的servlet部署在了liferay上。
我正在使用liferay 6.2,Tomcat 7,我在执行业务逻辑之前向servlet提交一个表单,我需要检查请求是否来自有效用户或不是。所以我需要获取用户身份验证的登录用户详细信息。如何在servlet中获取登录用户详细信息?有什么建议吗?
答案 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。