当我开发非响应式(Reactive)应用程序并在身份验证中使用 rememberMe 功能时,我只是扩展了 WebSecurityConfigurerAdapter 类并覆盖了 configure(HttpSecurity httpSecurity)
方法。在这种情况下,我在 httpSecurity 对象中有一个 rememberMe() 方法。
但是当我使用 Spring WebFlux 时会有所不同。据我所知,我所要做的就是使用 ServerHttpSecurity 类的实例定义一个 SecurityWebFilterChain bean,通过调用如下链:
serverHttpSecurity.authorizeExchange()
.anyExchange().authenticated()
.and()
.httpBasic()
.build();
但是这里没有像在 HttpSecurity 对象中那样处理 rememberMe cookie 的方法,我可以用这种方式处理它:
httpSecurity.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic()
.and()
.rememberMe()
你知道有什么解决办法吗?
最佳答案
不幸的是,这似乎是不可能的。
有一个旧的 issue on github ,不幸的是,不知道什么时候才能解决。
评论建议使用更长的 session 过期时间并将 session 卸载到外部数据存储(即 Redis)中。这样,您可以将信息存储在数据库中而不是 cookie 中。
他们推荐使用 Spring Session 项目。
关于java - Spring WebFlux + Security - 我们有 "remember-me"功能吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54991071/