如何在redis中存储spring安全会话信息?

Abd*_*eez 5 spring-security session-management redis

我在我的应用程序中使用Spring安全性进行身份验证和授权.我使用Neo4j数据库作为后端,并实现了userDetailsS​​ervice进行身份验证.

但是,每当我的应用程序重新启动时,用户都被迫再次登录.为了解决这个问题,我想将会话信息存储在redis数据库中,并在应用程序启动时将数据加载到Spring安全上下文中.

如果有任何文章和指针实现相同,请转发.

我正在考虑实现它,1)对于每个成功的身份验证,在redis中存储用户详细信息和会话详细信息.这必须在UserDetailsS​​ervice实现的loadUserByUsername()方法中实现.2)当用户注销时,从redis中删除数据,我在哪里可以获取此信息?是否有任何弹簧安全功能,我可以调用它3)每当应用程序重新启动时,将所有数据从redis加载到spring安全性,再次在哪里需要编写此逻辑?

如果我错过了任何信息,请告诉我.

Mac*_*rko 1

您需要配置Spring Security的记住我功能。

记住我或持久登录身份验证是指网站能够记住会话之间主体的身份。这通常是通过向浏览器发送 cookie 来完成的,该 cookie 在将来的会话期间被检测到并导致自动登录发生。Spring Security 为这些操作的发生提供了必要的钩子,并且有两个具体的 Remember-me 实现。一种使用散列来保护基于 cookie 的令牌的安全性,另一种使用数据库或其他持久存储机制来存储生成的令牌

Spring Security 文档中提供了更多信息: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/remember-me.html

您可以使用开箱即用的实现或注入您自己的实现(前面提到的 redis)。