从liferay portlet访问用户?

Jos*_*hua 15 portlet liferay

我正在尝试为liferay开发一个portlet.

如何访问当前登录用户的用户名和密码(以及其他数据生命周期)?

我还希望能够在用户更改密码时执行一些代码.

Jar*_*ala 15

你可以通过调用获得用户ID getRemoteUser()PortletRequest对象.这是由JSR-168定义的,因此它是跨门户兼容的.

获得ID后,您可以通过调用getUserById()(Liferay特定服务)获取其他信息.这是Portlet API规范未涵盖的内容,因此它将您锁定到Liferay.

  • Liferay特定服务是UserServiceUtil (3认同)

Pra*_*h K 14

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();
Run Code Online (Sandbox Code Playgroud)

另外;

long userId = themeDisplay.getRealUserId(); // themeDisplay.getUserId();
User user = UserLocalServiceUtil.getUser(userId);
Run Code Online (Sandbox Code Playgroud)

冒充用户:

Liferay有一个概念,即管理员(或具有正确权限集的人)可以模拟门户的特定用户.通过这个,他们可以看到门户网站对该用户的看法.

用于在用户更改密码时执行代码: 一种方法是创建一个钩子插件并通过扩展UserLocalServiceWrapper类来覆盖服务.然后检查密码更改并在自定义类中执行代码.

希望这可以帮助.