Как программно выйти из пользовательского портлета Liferay

Я создаю пользовательский портлет.

И мне нужно вывести пользователя из портала после того, как он выполнит какую-либо операцию в моем пользовательском портлете. Я продлеваю подписку Liferay MVCPortlet.

В одном из методов действия MyPortlet мне нужно написать код для выхода пользователя из системы, а затем перенаправить его на домашнюю страницу.

Обновление:
я попробовал следующее, что, как я думаю, выводит пользователя из системы, но не перенаправляет на домашнюю страницу после выхода:

actionResponse.sendRedirect(PortalUtil.getPortalURL(actionRequest) + "/c/portal/logout");

Спасибо всем


person Rasabihari Kumar    schedule 12.10.2012    source источник


Ответы (5)


Ну, это может быть очень поздний ответ, но это может помочь кому-то

Во-первых, вы должны подтвердить сеанс и перенаправить на URL-адрес выхода. В противном случае сеанс сохраняется, и пользователь перемещается на целевую страницу, даже если мы перенаправляем на URL-адрес выхода. Итак, вот что следует делать

HttpServletRequest request = PortalUtil.getHttpServletRequest(actionRequest);
request.getSession().invalidate();
actionResponse.sendRedirect(themeDisplay.getURLSignOut());

Надеюсь это поможет.

person Harsha Kasturi    schedule 13.10.2014

Я также не нашел способа отправить конкретное перенаправление с помощью выхода из системы liferay по умолчанию (/c/portal/logout). Поэтому я программно вышел из системы с помощью класса util AuthenticatedSessionManagerUtil, а затем отправил определенное местоположение перенаправления в объекте ответа, например. response.sendRedirect(yourLocation)

Примечание. В Liferay 7.2 я использовал AuthenticatedSessionManagerUtil.signOutSimultaneousLogins(userId) вместо AuthenticatedSessionManagerUtil.logout(userId), что мне не помогло. чт

person Marcel    schedule 14.02.2020
comment
Пожалуйста, постарайтесь быть более ясным, отвечая на вопрос. - person Yunus Temurlenk; 14.02.2020

Вы можете перенаправить на c/portal/logout точнее:

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

person Paul    schedule 15.10.2012
comment
Я пробовал вариант этого (см. мой обновленный вопрос), но он не перенаправляет на домашнюю страницу после вызова действия выхода из системы. - person Rasabihari Kumar; 16.10.2012
comment
Затем вам нужно установить страницу выхода по умолчанию для вашего портала. Для этого перейдите в Control--›PanelPortal--›Portal Settings, отредактируйте и вы увидите настройки. - person Paul; 16.10.2012

Просто оставьте это здесь после того, как столкнулись с этой проблемой (LR7):

    try {
        AuthenticatedSessionManagerUtil.logout(request, response);

        request.setAttribute(WebKeys.LOGOUT, true);

    }
person Victor    schedule 05.11.2016

Все, что вам нужно сделать, это

выполнить операцию: в конце операции используйте это:

HttpSession session = PortalUtil.getHttpServletRequest(request).getSession();
session.invalidate();


try {
    System.out.println(" redirecting to the required page");
                    response.sendRedirect(themeDisplay.getPortalURL() + "/page-on-which-to-be-redirected");

    } catch (IOException e1) {

          e1.printStackTrace();
        }
person Navankur Chauhan    schedule 08.02.2017