我现在将redis中的用户会话持久化到我的spring boot应用程序中。我想在应用程序启动时刷新redis中的所有会话。
现在,我将在应用程序启动时使会话无效,如下所示:
@EventListener
public void onApplicationEvent(ApplicationReadyEvent event) {
SecurityContextHolder.clearContext();
}
我不仅想使redis中的用户会话失效,还想刷新它们。
在这种情况下,我在so中找到了一些相关的帖子,但对于如何在启动时刷新redis中的会话条目却没有任何想法。有人能帮忙吗?
1条答案
按热度按时间bq3bfh9z1#
根据文档,spring session data redis支持两种redis会话刷新模式:
保存时-使用此模式,只有在
SessionRepository.save(Session)
已调用。立即-在这种模式下,对会话的任何更新都会立即写入redis示例。
您必须在中添加以下属性
application-properties
:在我看来,立即模式是合适的。这应该可以保证一旦使用
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