从liferay portlet访问用户?
我正在尝试开发liferay的portlet。
我如何才能访问当前登录的用户的用户名和密码(以及其他数据liferay)?
我还希望能够在用户更改密码时执行一些代码。
您可以通过调用PortletRequest
对象中的getRemoteUser()
来获取用户ID。 这由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插件并通过扩展UserLocalServiceWrapper类来覆盖服务。 然后检查密码更改并在您的自定义类中执行您的代码。
希望这可以帮助。
或者你可以使用javascript:
Liferay.ThemeDisplay.getUserId()
在Liferay命名空间中有很多不错的东西,请看看没有那么好记录的API:
另外,请查看localhost:8080 / api / jsonws下可用的JavaScript服务,您可以使用javascript调用该服务:
Liferay.Service(
'/user/get-user-by-id',
{
userId: 10199
},
function(obj) {
console.log(obj);
}
);
链接地址: http://www.djcxy.com/p/60149.html