会话管理

当浏览器调用登录接口成功后,服务端会和浏览器之间建立一个会话(Session),浏览器会在每次发送请求时都会携带一个sessionID,服务端根据这个SessionID来判断用户身份,当浏览器关闭后,服务端的Session并不会立即销毁,需要手动在服务端调用Session销毁方法,或者等待Session过期(默认30分钟)。

Drawing

在 Spring Security 中与Session相关的功能由SessionManagemenFilterSessionAutheaticationStrateey接口来处理,SessionManagomentFilter过滤器将Session相关操作委托给SessionAuthenticationStrategy接口去完成。

会话并发管理

会话并发管理就是指在当前系统中,同一个用户可以同时创建多少个会话,即可以同时在多少台设备上登录。默认情况下Spring Security并没有限制统同一账号在多少台设备上登录。

开启会话管理

httpSecurity.sessionManagement(httpSecuritySessionManagementConfigurer -> {
    httpSecuritySessionManagementConfigurer.maximumSessions(1)
            .maxSessionsPreventsLogin(false);
});

会话失效处理

// 会话管理
httpSecurity.sessionManagement(httpSecuritySessionManagementConfigurer -> {
    httpSecuritySessionManagementConfigurer.maximumSessions(1)
            .maxSessionsPreventsLogin(false).
            expiredUrl("/app/login");
});

最后更新于

这有帮助吗?