有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

spring/security中的java自定义会话超时

如何在spring中自定义会话超时。。 在web中设置会话超时参数/输入。15分钟的xml。。 而且它工作得很好。。 我想在会话超时发生之前执行几行,并且应该能够决定是否继续会话超时。。 这意味着。。 我想检查会话中的一些参数,然后有选择地对某些用户和其他用户继续会话超时(即在15分钟不活动后),此超时不应发生


共 (1) 个答案

  1. # 1 楼答案

    使用HttpSessionListener

    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
    
    public class SessionListener implements HttpSessionListener {
    
        @Override
        public void sessionCreated(HttpSessionEvent event) {
            // ..   event.getSession().getAttribute("xxxx")
            event.getSession().setMaxInactiveInterval(5*60);
        }
    
        @Override
        public void sessionDestroyed(HttpSessionEvent event) {
            System.out.println("==== Session is destroyed ====");
        }
    }
    

    在网上注册。xml

    <web-app ...>
        <listener>
            <listener-class>yourpackage.SessionListener</listener-class>
        </listener>
    </web-app>
    

    或者在应用程序初始值设定项中

    public class AppInitializer implements WebApplicationInitializer {
    
    //...
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            super.onStartup(servletContext);
            servletContext.addListener(new SessionListener());
        }
    //...
    
    }