java - spring/security 中的自定义 session 超时

标签 java spring session spring-security session-timeout

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

最佳答案

使用 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 ====");
    }
}

在 web.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());
    }
//...

}

关于java - spring/security 中的自定义 session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40214042/

相关文章:

java - TitleAreaDialog - 调整标题图像

java - 有没有一种方法可以将集合映射到字符串而不创建许多集合实例?

java - 最佳数据库迁移方法?

php - session 劫持或攻击?

.net - session 状态只能在配置中将enableSessionState设置为true时使用

php - 如何使用 PHP session 或 cookie 来实现这一点?

java - Servlet 和错误条件

spring - 如何避免使用 Spring Data Rest 进行 n+1 查询?

java - 如何模拟 jdbcTemplate.execute(callableStatementCreator, callableStatementCallback);

java - Spring boot - 循环bean依赖问题