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 で開発されており、コンサルタントとディレクターの 2 つのプロファイル (またはロール) が含まれています。

このアプリケーションでは、liferay 認証 (SSO の概念) を使用するため、認証用の jsp ページを作成しません。

liferayによって自動的に生成されたユーザーテーブルを操作します

したがって、私の Java EE アプリケーションでは、接続されたユーザーを取得する必要があり、そのロールをテストする必要があります。ディレクターの場合は、ディレクター JSP ページしか表示されず、コンサルタント ロールについても同様です。

したがって、Java コードでこの取得を行う必要があります。ユーザーは、デプロイされたポートレットで何も操作せずにログオンしました。

私のJavaクラスで宣言されたユーザーオブジェクトは、ページ全体に入力する必要があります

liferay の login.jsp (この jsp ページは認証用です)

したがって、最終的なテストシナリオは次のとおりです。

データベースに 2 人のユーザーがいます。

名前: Franco、電子メール: franco@test.org、ログイン: Franco、役割: ディレクター 名前: adam 電子メール: f@test.org、ログイン: Adamm、役割: コンサルタント

そして私のJava EEアプリケーションをliferayにデプロイした後

franco@test.org で認証を行い、ログインのために: franco

Director の JSP ページのみをデプロイしたアプリケーションを見つける必要があります

このセナリオンを作成するには、アプリケーションの 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