我的目标是在身份验证后恢复用户
我可以通过 jsp 页面进行检索
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<liferay-theme:defineObjects />
<portlet:defineObjects />
<liferay-ui:user-display userId="<%= user.getUserId() %>" />
但我想做同样的事情,但通过java代码
我告诉你为什么我想通过liferay认证后检索登录的用户
我的 Java EE 应用程序是使用 struts2 开发的,并且包含两个配置文件(或角色):顾问和主管
在这个应用程序中,我不创建用于身份验证的 jsp 页面,因为我使用 liferay 身份验证(SSO 的概念)
我使用由 liferay 自动生成的用户表
因此,在我的 Java EE 应用程序中,我必须检索已连接的用户,并且我必须测试它的角色:如果它是主管,那么我只看到主管 jsp 页面,并且以同样的方式查看顾问角色
因此,我必须在 java 代码中执行此操作:用户在部署的 portlet 中没有任何操作即可登录
在我的 Java 类中声明的用户对象必须在整个页面中填充
liferay的login.jsp(这个jsp页面是用来认证的)
所以最终的测试场景:
我的数据库中有两个用户:
姓名:Franco,电子邮件:franco@test.org,登录:Franco,角色:主管姓名:adam 电子邮件:f@test.org,登录:Adamm,角色:顾问
在 Liferay 中部署我的 Java EE 应用程序之后
如果我使用 franco@test.org 进行身份验证并登录:franco
我需要在应用程序中找到只为 Director 部署的 jsp 页面
为了使这个 senarion 我在我的应用程序的 java 类中做
import com.liferay.portal.model.User;
public class extends testAction ActionSupport {
private User user;
public void processAction (
ActionRequest actionRequest, ActionResponse actionResponse)
throws IOException, PortletException {
try {
user = PortalUtil.getUser (actionRequest);
} Catch (e PortalException) {
/ / TODO Auto-generated catch block
e.printStackTrace ();
} Catch (SystemException e) {
/ / TODO Auto-generated catch block
e.printStackTrace ();
}
}
public String initial() throws Exception {
user = PortalUtil.getUser (actionRequest);
if (user.getRole (). equals ("director"))
return "AuthDirector";
return "AuthoConsultant";
}
}
对于文件 struts.xml
<? Xml version = "1.0" encoding = "UTF-8"?>
<! DOCTYPE struts PUBLIC
"- / / Apache Software Foundation / / DTD Struts Configuration 2.0 / / EN"
"Http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="view" extends="struts-portlet-default" namespace="/view">
<action name="initial class="com.test.action.testAction" method="">
<result name="AuthDirector"> / WEB-INF/view/HomeDirector.jsp </ result>
<result name="AuthoConsultantr"> / WEB-INF/view/HomeConsultant.jsp </ result>
</ Action>
</ Package>
</ Struts>
我又做了一次没有成功的测试
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import com.liferay.portal.model.User;
public class extends testAction ActionSupport {
private User user;
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext externalContext = fc.getExternalContext();
Long id = Long.parseLong(externalContext.getUserPrincipal().getName());
public String initial() throws Exception {
user = UserLocalServiceUtil.getUserById(id);
if (user.getRole (). equals ("director"))
return "AuthDirector";
return "AuthoConsultant";
}
}