获取登录liferay门户的用户的用户凭据

时间:2011-09-20 06:18:13

标签: java liferay portal

我想获取登录liferay portlet的用户的用户ID和密码。我能够通过

获取登录门户的用户ID
String userName = (userInfo != null) ? (String)userInfo.get("**user.name.given**")

现在我也需要获取密码。我怎么能这样做?

我正在这样做,因为我需要登录到两个iframe(不同的网站),使用相同的用户ID和密码(输入登录门户网站)。

2 个答案:

答案 0 :(得分:1)

设置session.store.password有点危险,因为密码将以明文形式存储在RAM中,并会出现在内存转储等中。

通常Liferay不存储明文密码(即确切的密码文本),但只保留密码的哈希值。当用户尝试登录时,计算哈希值,然后仅存储哈希值或检查存储的哈希值。 (您可以将Liferay配置为存储明文密码,但不应该这样做,因为这不是很安全)。

在liferay 6.1中,您可以挂钩进入身份验证过程并在散列之前获取明文密码 - 为auth.pipeline.post创建一个钩子。 Liferay WIKI完整地描述了这一点:http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/authentication-pipeline

简而言之,您添加了自己的身份验证器,它不执行任何操作,只是一直返回Authenticator.SUCCESS,但在返回之前,它可以使用提供的明文密码执行某些操作。

答案 1 :(得分:0)

它解决了!!!

我们可以按如下方式获取用户名和密码,

String username = themeDisplay.getUser().getScreenName();
String password = (String)request.getSession().getAttribute(WebKeys.USER_PASSWORD);

并在portal-ext.properties中设置

session.store.password=true
session.shared.attributes.excludes=