我正在嘗試開發liferay的portlet。從liferay portlet訪問用戶?
我該如何訪問當前登錄用戶的用戶名和密碼(以及其他數據liferay)?
我也希望能夠在用戶更改密碼時執行一些代碼。
我正在嘗試開發liferay的portlet。從liferay portlet訪問用戶?
我該如何訪問當前登錄用戶的用戶名和密碼(以及其他數據liferay)?
我也希望能夠在用戶更改密碼時執行一些代碼。
您可以通過在PortletRequest
對象中調用getRemoteUser()
來獲取用戶標識。這由JSR-168定義,因此它是跨門戶兼容的。
一旦擁有該ID,您可以致電getUserById()
(Liferay特定服務)獲取其他信息。這是Portlet API規範未涵蓋的內容,因此它會將您鎖定到Liferay。
Liferay的具體的東西,這裏是寫在portlet類來獲取用戶的代碼示例:
ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(WebKeys.THEME_DISPLAY);
User user = themeDisplay.getRealUser(); // it gives you the actual Logged in User
//you can also use
// User user = themeDisplay.getUser(); // this would fetch the User you are impersonating
long userId = user.getUserId();
String userName = user.getEmailAddress();
或者;
long userId = themeDisplay.getRealUserId(); // themeDisplay.getUserId();
User user = UserLocalServiceUtil.getUser(userId);
模擬用戶:
Liferay的具有管理員有一個概念(或使用正確的一組權限的人)可以模擬門戶的一個特定的用戶。通過這些,他們可以看到門戶網站對用戶的看法。
對於執行代碼時用戶更改他們的密碼: 一種方法是創建一個hook plugin並通過擴展UserLocalServiceWrapper類中重寫服務。然後檢查密碼更改並在您的自定義類中執行您的代碼。
希望這會有所幫助。
或者你也可以使用JavaScript:
Liferay.ThemeDisplay.getUserId()
有很多不錯的Liferay的命名空間富人,看看在沒有做到有據可查的API:
另外,請看網頁在本地主機可用rvices:8080/API/jsonws,你可以用javascript調用調用:
Liferay.Service(
'/user/get-user-by-id',
{
userId: 10199
},
function(obj) {
console.log(obj);
}
);
一個簡單易用的方式來獲得在Liferay的用戶PortalUtil.getUser功能。
User user = PortalUtil.getUser(portletRequest);
Liferay的特定服務是UserServiceUtil – frandevel 2011-10-30 21:50:56