我试图在Liferay中为用户注册过程添加一些验证步骤,但似乎找不到合适的位置。
据我所知,在创建新用户时,没有任何事件可以添加我自己的代码(与我们有"login.events.post“事件的登录过程相反)。
有办法这样做吗?
更新:尽管创建一个新的用户注册portlet很有意义,但我们正在努力避免重新做救生圈已经做的事情。
我刚刚发现了"servlet.service.events.pre"事件,并认为可以在CreateAccountAction类上创建一个钩子来添加我自己的验证,但是我并没有从救生筏关于这个主题的文档中获得多少信息。如有任何想法/建议/链接,将不胜感激。
发布于 2013-01-11 19:40:35
最后在create_account.jsp上创建了一个钩子,并使用ajax对新用户的信息进行了一些验证(以及服务器端验证)。然后在login.jsp上创建另一个钩子(在救生筏完成创建新用户帐户后立即执行)。
加载login.jsp时,如果在此页面上登陆之前添加了用户,则救生筏将进行评估:
<c:if test='<%= SessionMessages.contains(request, "user_added") %>'>就在这里,我们在新创建的用户上添加了第二轮自己的验证。
发布于 2012-12-29 06:33:20
我想提出一个很简单的方法。
您不必创建一个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或您自己的生日:)
https://stackoverflow.com/questions/14078073
复制相似问题