簡體   English   中英

從Liferay Portlet觸發注銷

[英]Trigger a logout from a liferay portlet

作為Liferay / portal / portlet開發的新手,您每天都會遇到問題。 現在,我正在嘗試從Portlet中注銷,但是還沒有找到一種方法來完成該操作。 你應該怎么做? 我應該嘗試發送某種注銷事件還是其他? 在liferay來源中摸索着,我發現了一個LogoutAction.java似乎很有希望,但是如何觸發它呢?

最好的問候安德斯·奧爾姆

嘗試actionResponse.sendRedirect(“ / c / portal / logout”)

PortletSession.invalidate()嗎?

您可以在JSP中創建指向Liferay內部注銷功能的注銷鏈接,如下所示:

<%@page import="com.liferay.portal.util.PortalUtil"%>
.
.
<a href="<%= PortalUtil.getPortalURL(request) %>/c/portal/logout">Log Out</a>

經過2-3天的調查,我實現了通過ajax調用登錄和注銷。 要注銷它並不像調用session.invalidate()那樣簡單,而是要配置的東西還多。 我將寫出我是如何實現的:

首先編輯您的portal-ext.properties並添加以下行:session.enable.phishing.protection = false

然后,必須在所有portlet中將private-session-attributes設置為false。 訂購很重要,因此我將向您展示我的產品:

<portlet>
    <portlet-name>home</portlet-name>
    <icon>/icon.png</icon>
    <instanceable>false</instanceable>
    <private-session-attributes>false</private-session-attributes>
    <header-portlet-css>/css/main.css</header-portlet-css>
    <footer-portlet-javascript>/js/home.js</footer-portlet-javascript>
    <css-class-wrapper>home-portlet</css-class-wrapper>
</portlet>

一旦做到這一點,其余的工作就非常簡單。 登錄:

public static void login(ResourceRequest request,ResourceResponse response, String liferayUser, String liferayPassword) throws Exception{
    MethodKey key = new MethodKey("com.liferay.portlet.login.util.LoginUtil", "login", HttpServletRequest.class, HttpServletResponse.class, String.class, String.class, boolean.class, String.class);
    PortalClassInvoker.invoke(false, key, new Object[] { PortalUtil.getHttpServletRequest(request), PortalUtil.getHttpServletResponse(response), liferayUser, liferayPassword, false, null});       
}

並注銷:

public static void logout(ResourceRequest resourceRequest) throws Exception{
    HttpServletRequest request = PortalUtil.getHttpServletRequest(resourceRequest); 
    request.getSession().invalidate();
}

我使用ResourceRequest是因為我正在進行Ajax調用。 唯一的“問題”是,如果您登錄並想注銷並與另一個用戶登錄,則必須進行2個ajax調用(第二個從第一個返回)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM