我有一个与Spring后端通信的NextJS应用程序,我正确地获得了SESSION和X-CSRF cookie,但它们只在浏览器会话中持续,当浏览器窗口关闭然后重新打开时,我希望我的用户能够仍然在会话中,而不必每次都重新登录。
我知道Spring Security有“记住我”功能,但不幸的是,我使用的是WebFlux Security,而ServerHttpSecurity没有记住我的功能,我看到了这个问题https://github.com/spring-projects/spring-security/issues/5504,但不能很好地理解它们对解决方案的意义。
我使用的是Spring Session,由于我们无法记住我,我不知道最好的具体步骤是什么?我是否必须设置两个cookie的最长使用期限,并在我希望用户登录的日期使用它们?这是最好的操作过程吗?
我不想迁移到常规的SpringServlet安全性,除非这是解决这个问题的唯一方法。
1条答案
按热度按时间elcex8rz1#
由于RememberMe不在WebFlux安全应用程序上,因此我想到的唯一解决方案是使用Cookie。
您可以使用Spring Session中的guide来修改webflux应用程序中的会话cookie,对于CSRF令牌,您可以在CookieServerCsrfTokenRepository上设置最大年龄,就像它是here实现的一样,该更改将在下一个Security版本中进行。
通过设置最长存在时间,在重新打开浏览器窗口时,您仍然可以使用同一会话,除非服务器会话超时。
我不知道这是否是最好的解决方案,但如果有人想添加其他东西,这将是伟大的。