spring 中集成 session 管理非常方便(以至于文档非常少,这里也只做简单介绍)

SessionRepository

类似于 Jpa 的 Repository,从某个数据库(甚至可以是某个 map)中获取到 cookie 对应的 Session,以及进行增删查改。

Session

session 是一个接口,代表一个会话,除了可以获取和登录态有关的数据外,一般来说 Session 是持有 SessionRepository 的引用(一般封装不暴露)进行修改和过期等操作。

FindByIndexNameSessionRepository

SessionRepository 可以选择实现这个接口,具体的作用是通过一个 FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME(作为 key) 找到所有相关的 Session(在自动注入时注入一个 Session 数组)。

集成 spring security

spring security 记住我功能会延长 cookie 的有效期至最长,以实现“记住我”。对于其余和 session 相关的内容,spring security 将在配置后自动完成(只需要声明即可 sessionManagement() 调用将返回可配置对象)。

spring security 会将认证后的信息放入 SPRING_SECURITY_CONTEXT 的一个 session 字段中,用于记录用户的登录态。