Hook 为Liferay中的用户注册创建其他验证步骤

Hook 为Liferay中的用户注册创建其他验证步骤,hook,liferay,registration,liferay-6,user-registration,Hook,Liferay,Registration,Liferay 6,User Registration,我试图在Liferay中为用户注册过程添加一些验证步骤,但似乎找不到正确的位置 据我所知,在创建新用户时,没有任何事件可以让我添加自己的代码(与登录过程相反,我们有“login.events.post”事件) 有没有办法做到这一点 更新:我们试图避免重做liferay已经做过的事情,即使创建一个新的用户注册portlet很有意义 我刚刚发现了“servlet.service.events.pre”事件,并认为可以在CreateAccountAction类上创建一个钩子来添加我自己的验证,但我并没

我试图在Liferay中为用户注册过程添加一些验证步骤,但似乎找不到正确的位置

据我所知,在创建新用户时,没有任何事件可以让我添加自己的代码(与登录过程相反,我们有“login.events.post”事件)

有没有办法做到这一点

更新:我们试图避免重做liferay已经做过的事情,即使创建一个新的用户注册portlet很有意义


我刚刚发现了
“servlet.service.events.pre”
事件,并认为可以在
CreateAccountAction
类上创建一个钩子来添加我自己的验证,但我并没有从liferay关于这个主题的文档中得到多少信息。如果您有任何想法/建议/链接,我们将不胜感激。

我试图在下面提出一个非常简单的方法

您不必创建
钩子
来覆盖现有Liferay的用户注册表单。您可以使用自己喜爱的查看技术和自定义字段(我的意思是,与Liferay的用户注册字段相比,字段数量更少)创建自己的自定义用户注册表单。此表单上的所有验证都将由您的代码完成,错误消息将仅由您的代码引发。只有当所有验证都通过时,才能调用Liferay的方法

我只是想在下面举个例子。根据您的要求修改代码

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
或您自己的生日:)

最后在
create\u account.jsp
上创建了一个钩子,并使用ajax对新用户的信息进行了一些验证(以及服务器端验证)。然后在
login.jsp
上创建了另一个钩子(在liferay完成创建新用户帐户后立即执行)

加载
login.jsp
时,liferay会评估在登录此页面之前是否添加了用户:

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


就在这里,我们在新创建的用户上添加了第二轮我们自己的验证。

导入
portal impl.jar
在插件portlet中根本不是一个好做法。此外,从Liferay 6.1开始,如果portlet引用了
portal impl.jar
,它将不会构建或部署。由于问题包括标签,这种导入
portal impl.jar
的做法应该被放弃。