獲取

2011-09-20 41 views
0

我想誰登錄到Liferay的portlet.I我能得到誰已經使用獲取

登錄到門戶用戶ID的用戶的用戶名和密碼登錄誰到Liferay門戶的用戶的用戶憑據
String userName = (userInfo != null) ? (String)userInfo.get("**user.name.given**") 

現在我還需要獲取密碼。我怎樣才能做到這一點?

我這樣做是因爲我需要登錄到兩個iframe(不同的網站),具有相同的用戶名和密碼(輸入登錄到門戶)。

回答

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= 
1

設置session.store.password是有點危險的,因爲密碼會被保存以明文形式存在RAM中,並將出現在內存轉儲等中。

通常情況下,Liferay不存儲明文密碼(即精確的密碼文本),但只保留一個pas劍。當用戶嘗試登錄時,計算散列值,然後只存儲散列值或檢查存儲的散列值。 (您可以配置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,但在返回之前可以用提供的明文密碼做一些事情。

+0

...但是,一旦使用SSO解決方案,這將會失敗... –