我已經使用Liferay Portal創建了儀表板,並且我還有一個單獨的用戶管理服務器(OpenLDAP)。在Liferay Portal上更改密碼腳本
我的要求是,當用戶通過
Liferay portal
→ My Account
→ Password
→ Save
更改密碼,它會自動在我的LDAP服務器的更新。
爲此,我必須在Liferay門戶的密碼腳本中加入一些更改。
我在哪裏可以找到密碼腳本?或者可以說,當用戶更改密碼並單擊保存時會調用哪個腳本。
我已經使用Liferay Portal創建了儀表板,並且我還有一個單獨的用戶管理服務器(OpenLDAP)。在Liferay Portal上更改密碼腳本
我的要求是,當用戶通過
Liferay portal
→ My Account
→ Password
→ Save
更改密碼,它會自動在我的LDAP服務器的更新。
爲此,我必須在Liferay門戶的密碼腳本中加入一些更改。
我在哪裏可以找到密碼腳本?或者可以說,當用戶更改密碼並單擊保存時會調用哪個腳本。
你可以用一個鉤子更新密碼。由於Liferay最終將通過UserServiceImpl
和UserLocalServiceImpl
中的方法將密碼存儲在數據庫中,並且數據庫表User_
將要更新,這由User
型號表示。
所以可以使用任何下列方法:
*UserServiceWrapper
課程的updateUser
方法中寫下您的自定義代碼。UserListener
並使用方法onAfterUpdate
和/或onAfterCreate
編寫您的自定義代碼。您是否還考慮過使用Portal Settings
LDAP導出選項?
Portal Settings
→ Authentication
→ LDAP
→ Import/Export
的詳細信息,在Liferay User-guide
在../deploy/ROOT.war/html/portal
文件夾中有update_password.jsp
它負責呈現用戶界面。
如果選中該JSP頁面,被調用的動作是/portal/update_password
如果您在../deploy/ROOT.war/WEB-INF
文件夾檢查struts-config.xml
文件存在,您會得到它被調用相應的動作。下面是代碼,
<action path="/portal/update_password" type="com.liferay.portal.action.UpdatePasswordAction">
<forward name="portal.update_password" path="portal.update_password" />
</action>
如果檢查存在com.liferay.portal.action
包,那麼相關的代碼,改變用戶的密碼是下面的類UpdatePasswordAction
,
protected void updatePassword(HttpServletRequest request, HttpServletResponse response, ThemeDisplay themeDisplay, Ticket ticket)
throws Exception
{
....
UserLocalServiceUtil.updatePassword(
userId, password1, password2, passwordReset);
..
}
嗨維卡斯,我伸手在struts-config.xml,但無法找到UpdatePasswordAction類。你能告訴我如何訪問UpdatePasswordAction類 – Rupesh
@Rupesh我認爲你可以用鉤子方法而不是在EXT中修改類。掛鉤是可熱部署的並且侵入性較小。 –
嗨Prakash,非常感謝您的回覆。我已經嘗試了選項Portal Settings ------> Authentication ------> LDAP -----> import/export。但我認爲導出不會更新LDAP服務器中的更改。 – Rupesh