【问题标题】:Get the current user Liferay using a simple Java code使用简单的 Java 代码获取当前用户 Liferay
【发布时间】:2012-05-13 23:03:12
【问题描述】:

我正在使用 Liferay 6.0.6JBoss 5.1Struts2

我的问题是,如何在 Liferay 中使用 Java 代码登录当前用户。

【问题讨论】:

  • 我的意思是,解决方案应该是Java代码,我们必须通过电子邮件检索当前用户:)

标签: authentication jboss struts2 liferay portal


【解决方案1】:

在您的 doView/processAction 方法中执行以下操作

User user = (User) request.getAttribute(WebKeys.USER);

或使用 ThemeDisplay 对象。它包含其他信息,例如 companyId、groupId、...

ThemeDisplay td  =(ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
User user = td.getUser();

类 ThemeDisplay、User nad WebKeys 是 portal-service.jar 的一部分。

如果您只需要一些 id 来识别当前用户,您也可以使用

String userId = request.getRemoteUser();

这个解决方案不是 Liferay 特定的,应该可以在 jsr-286 门户之间移植。

【讨论】:

  • 你能告诉我更多关于实例“请求”的信息吗?如何初始化它?
  • 它可以是 RenderRequest、ActionRequest、EventRequest 或 ResourceRequest。如果您不熟悉它们,那么您应该阅读一些 portlet 教程,例如 liferay.com/documentation/liferay-portal/6.0/development/-/ai/…
  • 用户 currentUser = LiferayFacesContext.getInstance().getUser();
【解决方案2】:

Liferay 提供 Util 类

com.liferay.portal.util.PortalUtil

该类包含获取常用属性的所有实用方法。

尝试使用PortalUtil.getUser(PortletRequest portletRequest) 方法来避免创建新对象和引用。

【讨论】:

  • 与 ThemeDisplay 有什么不同?
  • @zhelon,什么都没有,你从请求中获取 themeDisplay,然后从中获取 getUser(),PortalUtil.getUser() 从请求中获取相同的内容,如果你看到 PortalImpl.getUser() 那么你会注意到这个 request.getAttribute(WebKeys.USER);
【解决方案3】:

这是另一种可能的方法:

private LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance();
User currentUser=liferayFacesContext.getUser()

【讨论】:

    猜你喜欢
    • 2012-05-27
    • 2012-05-18
    • 2021-10-24
    • 1970-01-01
    • 2018-06-01
    • 2010-10-24
    • 2012-04-03
    • 2020-03-29
    • 1970-01-01
    相关资源
    最近更新 更多