0

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

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

有没有办法做到这一点?

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

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

4

2 回答 2

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

于 2012-12-29T06:33:20.037 回答
0

最终创建了一个钩子create_account.jsp并使用 ajax 对新用户的信息进行了一些验证(连同服务器端验证)。然后创建另一个挂钩 login.jsp(在 liferay 完成创建新用户帐户后立即执行)。

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

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

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

于 2013-01-11T19:40:35.587 回答