我使用Liferay Portal创建了一个仪表板,我还有一个单独的用户管理服务器(OpenLDAP)。
我的要求是用户通过
更改密码
Liferay portal
→My Account
→Password
→Save
,它应自动在我的LDAP服务器中进行更新。
为此,我必须在Liferay门户的密码脚本中加入一些更改。
我在哪里可以找到密码脚本?或者说,当用户更改密码并单击“保存”时,将调用哪个脚本。
答案 0 :(得分:3)
您可以使用挂钩更新密码。因为liferay最终会通过UserServiceImpl
和UserLocalServiceImpl
中的方法将密码存储在数据库中,数据库表User_
将更新,由模型User
表示
所以可以使用以下任何一种方法:
*UserServiceWrapper
班级updateUser
方法中编写自定义代码。UserListener
并使用方法onAfterUpdate
和/或onAfterCreate
编写自定义代码。您是否还考虑过使用Portal Settings
LDAP导出选项?
Portal Settings
→Authentication
→LDAP
→Import / Export
,Liferay User-guide
答案 1 :(得分:2)
在../deploy/ROOT.war/html/portal
文件夹中有update_password.jsp
,负责展示用户界面。
如果您检查此JSP页面,则调用的操作是/portal/update_password
如果您检查struts-config.xml
文件夹中的../deploy/ROOT.war/WEB-INF
文件,您将获得相应的调用操作。以下是代码,
<action path="/portal/update_password" type="com.liferay.portal.action.UpdatePasswordAction">
<forward name="portal.update_password" path="portal.update_password" />
</action>
如果您检查UpdatePasswordAction
包中的班级com.liferay.portal.action
,则更改用户密码的相关代码如下:
protected void updatePassword(HttpServletRequest request, HttpServletResponse response, ThemeDisplay themeDisplay, Ticket ticket)
throws Exception
{
....
UserLocalServiceUtil.updatePassword(
userId, password1, password2, passwordReset);
..
}