在会话超时时设置 Liferay Hook

Set Liferay Hook on session timeout

我想在 Java 中编写一个挂钩,如果我的 Liferay 5.2.3 门户的会话超时则执行该挂钩。

我设法编写了一个挂钩,每当用户单击注销 link 时都会在 liferay-hook.xml 中使用以下设置执行该挂钩:

<hook>
    <event>
        <event-class>com.extensions.hooks.LogoutHook</event-class>
        <event-type>logout.events.pre</event-type>
    </event>
</hook>

然而,如果会话超时,Logout Hook 不会被调用,但我需要在超时时执行相同的方法。我没有找到会话超时的事件类型。

有没有办法在会话超时时执行 Java 方法并识别已结束会话的用户 ID?

有一个事件将在用户会话的 会话 Expiry/TimeOut 事件上触发,

# Servlet session destroy event
servlet.session.destroy.events = com.extensions.hooks.CustomPreSessionExpireAction

您可以在 liferay-hook.xmlportal.properties [Written in Hook] 或 portal-ext.properties.

中添加此 属性

并且可以用作,

public class CustomPreSessionExpireAction extends SessionAction {

    @Override
    public void run(HttpSession session) throws ActionException {
        //Code
    }
}

但是,我们只能在这里使用HttpSession。所以,你需要在这里想办法得到userId

谢谢