我有两个站点(site1和site2)和两个组(group1和group2)。我在两个站点上都有Sign In Liferay的portlet。我想要的是,如果Sign In portlet在site1上注册用户,那么用户被分配给group1,如果用户寄存器由Sign In portlet在site2上分配,那么用户被分配给group2。
该怎么做呢?
===EDIT===
我试过用struts操作编写钩子,但它对我不起作用。
救生筏-hook.xml:
<hook>
<struts-action>
<struts-action-path>/login/create_account</struts-action-path>
<struts-action-impl>com.mypackage.CreateAccountAction</struts-action-impl>
</struts-action>
</hook>CreateAccountAction.java:
package com.mypackage;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletConfig;
import com.liferay.portal.kernel.struts.BaseStrutsPortletAction;
import com.liferay.portal.kernel.struts.StrutsPortletAction;
public class CreateAccountAction extends BaseStrutsPortletAction {
public void processAction(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ActionRequest actionRequest,
ActionResponse actionResponse) throws Exception {
System.out.println("CreateAccountAction");
originalStrutsPortletAction.processAction(originalStrutsPortletAction,
portletConfig, actionRequest, actionResponse);
}
}单击:
12:25:38,177 ERROR [http-bio-8078-exec-126][PortletRequestProcessor:466] Forward does not exist发布于 2014-06-10 10:53:50
您可以编写钩子来覆盖struts-action(/login/create_account),负责创建帐户。重写和添加Struts操作
在代码中,执行原始struts操作的processAction (com.liferay.portlet.login.action.CreateAccountAction),在检查SessionErrors对象之后,它应该是空的。(因为那时只创建了用户)
如果SessionErrors为空,则通过emailaddress (从请求参数获取emailaddress)和从themeDisplay对象获取当前组获取用户对象。
拥有用户对象和当前组对象,可以很容易地通过GroupLocalServiceUtil.addUserGroups(userId, groupId)将用户分配给组。
https://stackoverflow.com/questions/24138415
复制相似问题