在为项目配置了安全令牌后,大多数接口都正常运行,但是一个或两个接口未能调用。调试后,发现它是由空引起的。
接口的相关方法如下。您可以看到该方法可以使用异步执行。
检查弹簧安全的文档
默认情况下,Spring Security身份验证限制为线程局部。因此,当执行流在带有@ASYNC的新线程中运行时,它将不是身份验证的上下文。
使用包装线程池可以解决此问题,相关代码如下:
这个问题并不难调查,但是需要一定时间。源代码确实是程序员的核心竞争力。如果您可以阅读足够的框架源代码,则必须更快地解决此问题,甚至可以更快地避免。