如何从Liferay自定义portlet以编程方式注销

时间:2012-10-12 10:39:04

标签: liferay logout liferay-6

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

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

MyPortlet的一个动作方法中,我需要编写代码来注销用户,然后将其重定向到主页。

更新
我尝试了以下操作,我认为会注销用户,但在注销后不会重定向到主页:

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

全部谢谢

5 个答案:

答案 0 :(得分:1)

这可能是一个非常晚的回复,但它可能会帮助某人

首先,您必须验证会话并重新定向到注销URL。否则,即使我们重定向到注销网址,会话仍会保留,用户也会移至目标网页。所以,这是应该做的事情

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

希望这有帮助。

答案 1 :(得分:1)

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

注意: 在Liferay 7.2中,我使用了AuthenticatedSessionManagerUtil.signOutSimultaneousLogins(userId)而不是AuthenticatedSessionManagerUtil.logout(userId),但不适用于我。 hth

答案 2 :(得分:0)

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

  

actionResponse.sendRedirect( “/ C /门户/注销/”);

答案 3 :(得分:0)

在面对这个问题(LR7)后离开这里:

    try {
        AuthenticatedSessionManagerUtil.logout(request, response);

        request.setAttribute(WebKeys.LOGOUT, true);

    }

答案 4 :(得分: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();
        }