私の目標は、認証後にユーザーを回復することです
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";
}
}