我正在尝试在Liferay中为用户注册过程添加一些验证步骤,但似乎找不到合适的位置。
据我所知,在创建新用户时,我没有可以添加自己的代码的事件(与我们有“login.events.post”事件的登录过程相反)。
有没有办法做到这一点?
更新:我们正试图避免重做liferay已经做过的事情,即使创建一个新的用户注册portlet也很有意义。
我刚刚发现了"servlet.service.events.pre"
事件,并认为可以在CreateAccountAction
类上创建一个钩子来添加我自己的验证,但是我从liferay关于这个主题的文档中得到的不多。任何想法/建议/链接将不胜感激。
答案 0 :(得分: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 :(得分:0)
结束在create_account.jsp
上创建一个钩子,并使用ajax对新用户的信息进行一些验证(连同服务器端验证)。然后在login.jsp
上创建了另一个钩子(在liferay完成创建新用户帐户后立即执行)。
加载login.jsp
时,liferay会在登陆此页面之前评估是否添加了用户:
<c:if test='<%= SessionMessages.contains(request, "user_added") %>'>
正是我们在新创建的用户上添加了第二轮自己的验证。