Liferay-autologin钩子/portlet不';t注销当前用户
似乎Liferay的autologin钩子没有注销当前用户。因此,我尝试通过以下方法调用以编程方式执行此操作:Liferay-autologin钩子/portlet不';t注销当前用户,liferay,liferay-6,Liferay,Liferay 6,似乎Liferay的autologin钩子没有注销当前用户。因此,我尝试通过以下方法调用以编程方式执行此操作: request.getSession().invalidate(); 但是没有成功。是否有人在自动登录挂钩上有相同的问题?嗨,要注销,您必须先使cookie无效,然后使会话无效。有关详细信息,请参阅Liferay LogoutAction 主要问题是,如果用户登录,则不会执行自动登录筛选器,因此您无法在其中执行任何注销操作 对于我的解决方案,我创建了一个servlet过滤器,用于检查
request.getSession().invalidate();
但是没有成功。是否有人在自动登录挂钩上有相同的问题?嗨,要注销,您必须先使cookie无效,然后使会话无效。有关详细信息,请参阅Liferay LogoutAction
主要问题是,如果用户登录,则不会执行自动登录筛选器,因此您无法在其中执行任何注销操作 对于我的解决方案,我创建了一个servlet过滤器,用于检查自动登录和执行注销过程的一些参数。要创建过滤器,请遵循以下指南: 我在doFilter方法(在servlet过滤器中)中注销的代码:
在Liferay 7.2中,创建模块portlet并执行以下操作: 在导入后的顶部添加:
@Component(immediate = true, property = {"key=login.events.pre"}, service = LifecycleAction.class)
按如下方式自定义您的类:
public class LoginPreAction implements LifecycleAction
加:
这将使您的会话无效
现在发送重定向:
try {
lifecycleEvent.getResponse().sendRedirect("/c/portal/logout");
} catch (IOException e) {
System.out.println("IOException while redirecting:::: "+e.getStackTrace());
}
您可以重定向到/c/portal/logout,在那里调用
request.getSession().invalidate()代码>?如果从某个自定义Portlet调用它,则只会使webapp的会话无效,而不会使Liferay的会话无效。
lifecycleEvent.getRequest().getSession().invalidate();
try {
lifecycleEvent.getResponse().sendRedirect("/c/portal/logout");
} catch (IOException e) {
System.out.println("IOException while redirecting:::: "+e.getStackTrace());
}