我正在创建一个自定义portlet。
我需要在自定义portlet中执行某些操作后从门户注销用户。我正在扩展liferay的MVCPortlet
。
在MyPortlet
的一个动作方法中,我需要编写代码来注销用户,然后将其重定向到主页。
更新
我尝试了以下操作,我认为会注销用户,但在注销后不会重定向到主页:
actionResponse.sendRedirect(PortalUtil.getPortalURL(actionRequest) + "/c/portal/logout");
全部谢谢
答案 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();
}