在会话超时时设置Liferay Hook

Sim*_*ant 2 java session session-timeout liferay

我想编写一个Java中的Hook,如果Liferay 5.2.3 Portal的会话超时则执行该Hook.

我设法编写了一个Hook,只要用户点击注销链接,就会执行以下设置liferay-hook.xml:

<hook>
    <event>
        <event-class>com.extensions.hooks.LogoutHook</event-class>
        <event-type>logout.events.pre</event-type>
    </event>
</hook>
Run Code Online (Sandbox Code Playgroud)

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

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

Run*_*orn 5

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

# Servlet session destroy event
servlet.session.destroy.events = com.extensions.hooks.CustomPreSessionExpireAction
Run Code Online (Sandbox Code Playgroud)

您可以添加此属性liferay-hook.xmlportal.properties[写入钩子]或portal-ext.properties.

并可以用作,

public class CustomPreSessionExpireAction extends SessionAction {

    @Override
    public void run(HttpSession session) throws ActionException {
        //Code
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我们只能HttpSession在这里使用.所以,你需要找出到达userId这里的方法.

谢谢

  • 非常感谢,这是有效的!我可以从会话属性`Long id =(Long)session.getAttribute("USER_ID");获取用户ID; (2认同)