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

Session 如何在servlet(Portlet)中获取Liferay登录用户详细信息?,session,servlets,liferay,liferay-6,portlet,Session,Servlets,Liferay,Liferay 6,Portlet,我已经将我的应用程序部署为Liferay上的porlet,现在我需要在执行业务逻辑(在servlet中)的同时执行会话管理。 假设我已经在liferay上部署了servlet 我使用的是liferay 6.2、Tomcat 7,在执行业务逻辑之前,我需要向servlet提交一个表单,以检查请求是否来自有效用户。因此,我需要获取登录用户的详细信息以进行用户身份验证。如何在servlet中获取登录用户详细信息?有什么建议吗?您可以使用以下代码登录用户: ThemeDisplay td =(Them

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


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

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

ThemeDisplay td  =(ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
User urs=td.getUser()


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

为了创建整个portlet上下文,您必须模拟liferay所做的任何事情。我觉得你给出的场景不值得这么做。将servlet代码添加到portlet中有什么问题,在portlet中您拥有所有这些上下文

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


还有其他的解决方案,但与将servlet代码移动到portlet中相比,它们似乎都非常复杂,因此在我提到它们之前,我将等待更多的参数说明为什么您确实需要使用这个实现

“部署的portlet”和“想要为servlet进行会话管理”?我不确定我是否理解这个问题,也不确定你到底想做什么。请详细说明。我正在使用Liferay 6.2、tomcat 7,在执行业务逻辑之前,我需要向servlet提交一个表单,以检查请求是否来自有效用户。因此,我需要获取登录用户的详细信息以进行用户身份验证。如何在servlet中获取登录用户详细信息您如何在liferay中部署servlet?我已经创建了一个web应用程序,并为此创建了war。然后我复制了liferay的deploy文件夹中的war文件,并启动了tomcat。所以它被部署了。当点击该web应用程序的servlet URL时。在该web应用程序中,我需要获取当前登录用户的详细信息。这可能吗?如果是,我该怎么做?我现在有点困惑。我该如何用porlet书写?在任何配置文件中?我到底需要在哪里添加上述代码?如果我在启动liferay tomcat时创建任何web应用程序并创建.war文件并部署。那么该web应用程序是否将成为portlet?如果没有,我如何创建porlet?您可以根据您的实现在任何java类中编写它。您只需要导入“import com.liferay.portal.kernel.util.WebKeys;”和“导入com.liferay.portal.theme.ThemeDisplay;”你可以说这行不通。actionRequest是PortletRequest,在servlet中没有。与主题显示相同:Liferay使其在portletRequest中可用,但servlet处理HttpServletRequest。在这种情况下,Liferay不会为您做任何事情—您必须使用portlet来获取这些对象。不是servlet。