我最近升级了我的 spring boot 应用程序的 Spring,结果,底层 Spring Security Core 升级到了 5.4.5。
现在启动 Spring Boot 应用程序时,我看到以下问题:
org.eclipse.jetty.server.HttpChannel - handleException / java.io.InvalidClassException:
org.springframework.security.core.context.SecurityContextImpl; local class incompatible:
stream classdesc serialVersionUID = 530, local class serialVersionUID = 540
在这种情况下,我在 GitHub 上找到了这篇文章:https://github.com/spring-projects/spring-security/issues/9204和 https://github.com/spring-projects/spring-security/issues/3736 .
但是我不知道如何解决这个问题。有人可以在这里帮忙吗?谢谢。
最佳答案
在https://github.com/spring-projects/spring-security/issues/9204你可以找到: “Spring Security 不打算在版本之间序列化”
这令人兴奋。所以所有用户都需要在版本升级时注销!?
你能做什么?对于当前的升级,您必须注销所有用户。但是您可以为下一次升级做准备:
您需要为 session 对象编写自己的序列化。这是一个项目,他们在其中添加了自己的 session 序列化用户 Jackson 和一些 redis 库。例如,即使您使用的是 mysql,此代码也无需更改即可工作:
有一点需要注意。因此,如果您不在生产环境中,则添加此配置,当安全库升级时,您就可以了,但是如果您是在生产环境中,则第一次部署此配置时,所有用户都需要先注销,因为 session 序列化不会适合上一个!
关于java - 如何修复 java.io.InvalidClassException : org. springframework.security.core.context.SecurityContextImpl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66983628/