【问题标题】:Spring Security with custom session timeout [closed]具有自定义会话超时的 Spring Security [关闭]
【发布时间】:2018-01-15 18:52:48
【问题描述】:

我需要一个从 GUI 设置会话超时的选项。目前我们可以使用配置全局更改会话超时

server.session.timeout=120
server.session.cookie.max-age=120
server.session.timeout=120`

我们还可以为每个会话设置会话超时。

session.setMaxInactiveInterval(120);

但找不到动态全局设置会话超时的选项。有没有办法使用spring boot来做到这一点

提前致谢

【问题讨论】:

标签: java session spring-boot spring-security session-timeout


【解决方案1】:

我认为您可能需要使用 spring jdbc session 或 redis session 以便您可以完全控制会话存储。

Spring boot jdbc session 给了一个bean

@Autowired JdbcOperationsSessionRepository sessionRepository;

使用它我们可以从控制器设置空闲超时。

只需添加依赖项并为您的配置添加@EnableJdbcHttpSession。

http://docs.spring.io/spring-session/docs/current/reference/html5/guides/httpsession-jdbc-boot.html#httpsession-jdbc-boot-sample

但是看起来会话表不是自动创建的,你需要手动创建表。您可以在

中找到语句

org/springframework/session/jdbc/schema-*.sql

http://docs.spring.io/spring-session/docs/current/api/org/springframework/session/jdbc/JdbcOperationsSessionRepository.html

编辑:1

即使 jdbc session 提供了一种设置全局默认超时的方法,我发现它不能正常工作。似乎唯一的解决方案是在用户首次使用以下代码登录时设置会话超时。

session.setMaxInactiveInterval(120);

【讨论】:

    【解决方案2】:

    实现此目的的一种方法:

    1. 保持用户的登录时间。
    2. 以某种频率(例如 30 秒)从 GUI 向服务器发出 ajax ping 请求。
    3. 从会话中获取用户以及当 ping 请求进来时他的会话超时间隔。
    4. 将其与当前时间进行比较,如果有间隔则终止会话 超过。

    以下代码使当前用户的http会话无效:

        public static void customLogout(HttpServletRequest request, HttpServletResponse response){
    
            CookieClearingLogoutHandler cookieClearingLogoutHandler = new CookieClearingLogoutHandler(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY);
    
            SecurityContextLogoutHandler securityContextLogoutHandler = new SecurityContextLogoutHandler();
    
            cookieClearingLogoutHandler.logout(request, response, null);
    
            securityContextLogoutHandler.logout(request, response, null);
    
        }
    

    【讨论】:

      猜你喜欢
      • 2014-10-20
      • 2018-09-27
      • 2016-08-03
      • 2014-10-18
      • 2012-12-26
      • 1970-01-01
      • 2012-05-18
      • 2014-05-04
      • 2012-02-24
      相关资源
      最近更新 更多