就是在调试北京项目的时候A 服务调用B服务的Feign api时在A服务能获取用户信息,在B中就无法获取到,搞了很长时间 发现同一个请求从A到 B会导致 当前线程的ID发生改变。
在设置token的时候我们是通过SecurityContextHolder.getContext().setAuthentication(authentication);底层是使用ThreadLocal来存储的,这样会导致在子线程中无法获取到父线程的信息,所以导致获取用户信息失败。所以就浅入了解了下,处理方式就是重写feign的RequestInterceptor接口,把当前线程的ServletRequestAttributes 赋值到Feign的RequestTemplate下即可。
不知道这个的可以了解一下子(因为当时重新搭建项目把能删的都删了,所以出现这个问题)