Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Liferay-autologin钩子/portlet不';t注销当前用户_Liferay_Liferay 6 - Fatal编程技术网

Liferay-autologin钩子/portlet不';t注销当前用户

Liferay-autologin钩子/portlet不';t注销当前用户,liferay,liferay-6,Liferay,Liferay 6,似乎Liferay的autologin钩子没有注销当前用户。因此,我尝试通过以下方法调用以编程方式执行此操作: request.getSession().invalidate(); 但是没有成功。是否有人在自动登录挂钩上有相同的问题?嗨,要注销,您必须先使cookie无效,然后使会话无效。有关详细信息,请参阅Liferay LogoutAction 主要问题是,如果用户登录,则不会执行自动登录筛选器,因此您无法在其中执行任何注销操作 对于我的解决方案,我创建了一个servlet过滤器,用于检查

似乎Liferay的autologin钩子没有注销当前用户。因此,我尝试通过以下方法调用以编程方式执行此操作:

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());            
    }