Я использую Spring Boot и Spring Session и пытаюсь реализовать следующую политику в отношении пользовательских сессий:
- Пользователь выходит из системы, если неактивен более 1 часа
- Пользователь выходит из системы, если закрывает браузер
- Пользователь выходит из системы, если он активен более 12 часов
Я знаю, что могу достичь # 1, установив server.session.timeout
в 1 час. Я знаю, что могу достичь # 2, установив server.session.cookie.max-age
в -1 (по умолчанию). Исключая # 2, я могу достичь # 3, также установив server.session.cookie.max-age
на 12 часов. Тем не менее, я не вижу способа, чтобы оба # 2 и # 3 изначально были вместе с Spring Session.
Рассматривая реализацию Spring Session, мне кажется, что я мог бы заставить это работать, если бы мог получить вывод ExpiringSession#isExpired
, возвращающий true, если либо now - maxInactiveInterval > lastAccessedTime
(по умолчанию), либо now - maxActiveInterval >= creationTime
.
Однако я не вижу способа предоставить собственную реализацию или оболочку для ExpiringSession
без создания собственной SessionRepository
. Это было бы довольно просто, но я хотел бы иметь возможность полагаться на гибкость конфигурации, уже обеспеченную автоконфигурацией Spring Boot для Spring Session, и просто предоставлять свое собственное поведение.
То, что я пытаюсь сделать, необычно, или мой подход не звучит? Я чувствую, что мне не хватает какой-то технической причины, по которой мы бы не хотели применять такой тип политики.
Спасибо.