2012-12-29 160 views
0

我試圖向Liferay中的用戶註冊過程添加一些驗證步驟,但似乎無法找到正確的位置來執行此操作。在Liferay中爲用戶註冊創建額外的驗證步驟

據我所知,在創建新用戶時(與登錄過程中出現「login.events.post」事件相反),我無法添加自己的代碼。

有沒有辦法做到這一點?

UPDATE:我們試圖避免重做liferay已經做的事情,即使創建新的用戶註冊portlet也有很大意義。

我剛剛發現了關於"servlet.service.events.pre"事件,並認爲可以在CreateAccountAction類上創建一個鉤子來添加我自己的驗證,但是我沒有從liferay關於此主題的文檔中獲得太多內容。任何想法/建議/鏈接將不勝感激。

回答

0

結束創建一個掛鉤create_account.jsp並使用ajax做一些驗證與服務器端驗證)對新用戶的信息。然後在login.jsp上創建另一個鉤子(在liferay完成創建新用戶帳戶後執行)。

login.jsp被加載,Liferay的評估是否降落在此頁面上添加一個用戶:

<c:if test='<%= SessionMessages.contains(request, "user_added") %>'> 

它就在那裏,我們添加新創建的用戶的第二回合我們自己的驗證中。

1

我試圖在下面建議一個非常簡單的方法。

您不必創建hook來覆蓋現有的Liferay用戶註冊表單。您可以使用您最喜愛的視圖技術和您自己定製的字段(我的意思是,與Liferay的用戶註冊字段相比,字段數量較少)創建您自己的定製用戶註冊表單。此表單上的所有驗證都將由您的代碼完成,並且錯誤消息僅由您的代碼引發。只有當所有的驗證通過後,您纔可以致電Liferay的addUser方法。

我只是想在下面提供一個例子。根據您的要求修改代碼。

if(allValidationsPassThrough) 
{ 
long[] organizationIds = { 111L }; //Just an example. Check the Organisation ID you are using 
long[] groupIds = { 222L }; 
long[] roleIds = { 333L }; 
long[] userGroupIds = (long[])null; 
String screenName = yourBean.getUser(); //Just an example 

UserLocalServiceUtil.addUser(//Pass the parameters to this method); 
} 

注意:有跡象表明,這種方法需要很多參數。在用戶註冊表格中,如果你沒有捕獲生日(例如,),那麼將該值作爲null或你自己的生日:)

+1

導入'portal-impl.jar'在插件portlet中並不是一個好習慣。此外,從Liferay 6.1開始,如果portlet指向'portal-impl.jar',則不會構建或部署。由於問題包含[tag:liferay-6]標記,因此應該放棄導入'portal-impl.jar'的這種做法。 –

+0

感謝普拉卡什。 –