我想获取登录liferay portlet的用户的用户ID和密码。我能够通过
获取登录门户的用户IDString userName = (userInfo != null) ? (String)userInfo.get("**user.name.given**")
现在我也需要获取密码。我怎么能这样做?
我正在这样做,因为我需要登录到两个iframe(不同的网站),使用相同的用户ID和密码(输入登录门户网站)。
答案 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=