Вызов выхода из портлета liferay - PullRequest
2 голосов
/ 18 июня 2010

Будучи совершенно новым для разработки liferay / portal / portlet, вы ежедневно сталкиваетесь с проблемами. Сейчас я пытаюсь выйти из портлета, но не нашел способа сделать это. Как ты должен это сделать? Должен ли я попытаться отправить какое-то событие выхода из системы или что-то еще? Собираясь в источниках liferay, я нашел LogoutAction.java, который выглядит многообещающим, но как его вызвать?

С наилучшими пожеланиями, Андерс Олме

Ответы [ 4 ]

3 голосов
/ 22 июля 2010

try actionResponse.sendRedirect ("/ c / portal / logout")

1 голос
/ 24 ноября 2011

Вы можете создать ссылку выхода из системы для внутренней функции выхода Liferay, как эта, в вашей JSP:

<%@page import="com.liferay.portal.util.PortalUtil"%>
.
.
<a href="<%= PortalUtil.getPortalURL(request) %>/c/portal/logout">Log Out</a>
1 голос
/ 18 июня 2010

PortletSession.invalidate ()?

0 голосов
/ 30 января 2014

После 2-3 дней исследования я смог войти в систему и выйти с помощью ajax-вызовов. Выйти из системы не так просто, как вызвать session.invalidate (), но для настройки есть только немного больше. Я напишу, как я этого добился:

Сначала отредактируйте ваш portal-ext.properties и добавьте следующую строку: session.enable.phishing.protection = ложь

Затем во ВСЕХ ваших портлетах вы должны установить для атрибутов private-session значение 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 (второй раз возвращался из первого).

...