我将Spring的OAuth2应用程序切换到了RedisTokenstore。现在访问校长,主要是通过......
SecurityContextHolder.getContext().authentication.userAuthentication.principal as User
......我得到了......
java.lang.ClassCastException: ...User cannot be cast to ...User
(三个点实际上是完整的类路径)。
我对jave / kotlin很陌生,对模型的理解只是模糊不清。
一些提示:
storeAccessToken
)readAccessToken
被调用两次(我认为这是一次不必要的往返,但这是另一回事)doFilter
方法中,即在第二次走过时。 更新:串口版hickhup是因为我在添加串行后没有刷新redis缓存。所以这只是cannot cast
错误。
如何开始调试?
答案 0 :(得分:1)
spring-devtools实际上存在一个问题:
20.2.7已知限制
重新启动功能不适用于使用标准ObjectInputStream反序列化的对象。 如果需要反序列化数据,可能需要使用Spring ConfigurableObjectInputStream与 Thread.currentThread()。getContextClassLoader()。
不幸的是,有些第三方库没有反序列化 考虑上下文类加载器。如果你发现这样的问题,你 需要向原作者请求修复。
一种选择是升级到spring-boot 2。+
另一种方法是在不需要它的情况下完全删除devtools。下面是一个示例,如果您使用Maven将从1.3.0及更高版本中删除任何版本:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>[1.3.0,)</version>
<scope>provided</scope>
</dependency>
确保在完成后首先冲洗Redis以进行验证。