java—在启动spring引导应用程序时刷新用户会话

quhf5bfb  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(416)

我现在将redis中的用户会话持久化到我的spring boot应用程序中。我想在应用程序启动时刷新redis中的所有会话。
现在,我将在应用程序启动时使会话无效,如下所示:

@EventListener
  public void onApplicationEvent(ApplicationReadyEvent event) {
    SecurityContextHolder.clearContext();
  }

我不仅想使redis中的用户会话失效,还想刷新它们。
在这种情况下,我在so中找到了一些相关的帖子,但对于如何在启动时刷新redis中的会话条目却没有任何想法。有人能帮忙吗?

bq3bfh9z

bq3bfh9z1#

根据文档,spring session data redis支持两种redis会话刷新模式:
保存时-使用此模式,只有在 SessionRepository.save(Session) 已调用。
立即-在这种模式下,对会话的任何更新都会立即写入redis示例。
您必须在中添加以下属性 application-properties :

spring.session.redis.flush-mode=immediate

在我看来,立即模式是合适的。这应该可以保证一旦使用 SecurityContextHolder.clearContext() ,则redis示例也将刷新所有要失效的会话。
参考链接:
https://docs.spring.io/spring-session/docs/current-snapshot/api/org/springframework/session/flushmode.html
https://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot-redis.html

相关问题