2

我正在创建一个自定义 portlet。

在用户在我的自定义 portlet 中执行某些操作后,我需要从门户中注销用户。我正在延长 liferay 的MVCPortlet.

在其中一种MyPortlet操作方法中,我需要编写代码以注销用户,然后将其重定向到主页。

更新:
我尝试了以下我认为注销用户但在注销后不重定向到主页的方法:

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

谢谢大家

4

5 回答 5

1

好吧,这可能是一个很晚的回复,但它可能对某人有所帮助

首先,您必须验证会话并重定向到注销 URL。否则,即使我们重定向到注销 url,会话仍然存在并且用户被移动到登录页面。所以,这是一个人应该做的

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

希望这可以帮助。

于 2014-10-13T14:06:43.383 回答
1

我也没有找到使用 liferay 的默认注销 (/c/portal/logout) 发送特定重定向的方法。所以我使用 util 类以编程方式注销用户AuthenticatedSessionManagerUtil,然后在响应对象中发送特定的重定向位置,例如response.sendRedirect(yourLocation)

注意:在 Liferay 7.2 中,我使用AuthenticatedSessionManagerUtil.signOutSimultaneousLogins(userId)的不是对我有用的AuthenticatedSessionManagerUtil.logout(userId)。hth

于 2020-02-14T12:59:46.040 回答
0

您可以更精确地重定向到 c/portal/logout:

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

于 2012-10-15T06:56:06.377 回答
0

遇到这个问题(LR7)后,就把它留在这里:

    try {
        AuthenticatedSessionManagerUtil.logout(request, response);

        request.setAttribute(WebKeys.LOGOUT, true);

    }
于 2016-11-05T14:11:22.153 回答
0

你所要做的就是

执行操作:在操作结束时使用:

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();
        }
于 2017-02-08T11:44:50.623 回答