2

我的目标是在身份验证后恢复用户

我可以通过 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";
    }


}
4

0 回答 0