当我开发非响应式(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/

10-09 07:29