2013-06-05 100 views
1

我已經使用Liferay Portal創建了儀表板,並且我還有一個單獨的用戶管理服務器(OpenLDAP)。在Liferay Portal上更改密碼腳本

我的要求是,當用戶通過
Liferay portalMy AccountPasswordSave更改密碼,它會自動在我的LDAP服務器的更新。

爲此,我必須在Liferay門戶的密碼腳本中加入一些更改。

我在哪裏可以找到密碼腳本?或者可以說,當用戶更改密碼並單擊保存時會調用哪個腳本。

回答

3

你可以用一個鉤子更新密碼。由於Liferay最終將通過UserServiceImplUserLocalServiceImpl中的方法將密碼存儲在數據庫中,並且數據庫表User_將要更新,這由User型號表示。

所以可以使用任何下列方法:

  1. 使用Wrapper hook。在您的*UserServiceWrapper課程的updateUser方法中寫下您的自定義代碼。
  2. 或使用Model Listener hook。創建一個UserListener並使用方法onAfterUpdate和/或onAfterCreate編寫您的自定義代碼。

您是否還考慮過使用Portal Settings LDAP導出選項?
Portal SettingsAuthenticationLDAPImport/Export的詳細信息,在Liferay User-guide

+0

嗨Prakash,非常感謝您的回覆。我已經嘗試了選項Portal Settings ------> Authentication ------> LDAP -----> import/export。但我認爲導出不會更新LDAP服務器中的更改。 – Rupesh

2

../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); 
    .. 
    } 
+0

嗨維卡斯,我伸手在struts-config.xml,但無法找到UpdatePasswordAction類。你能告訴我如何訪問UpdatePasswordAction類 – Rupesh

+0

@Rupesh我認爲你可以用鉤子方法而不是在EXT中修改類。掛鉤是可熱部署的並且侵入性較小。 –