认证信息如何放置新开的线程里

来源:4-6 认证流程源码级详解

丿恶搞丿

2020-03-11

当前用户登录成功以后,在执行业务过程中需要另开一条线程远程去访问其他的服务,因为新开的这个线程没有认证信息,因此访问被拒绝
SecurityContextHolder.getContext().getAuthentication()获取到当前用户的认证信息后,如何放置到新开的线程里
new Thread(new Runnable() {
@Override
public void run() {
//Fegin调用其他服务
}
}).start();

写回答

1回答

JoJo

2020-03-11

SecurityContextHolder.getContext().getAuthentication() 这个代码实际上是从ThreadLocal里获取的用户信息,所以在子线程用InheritableThreadLocal就可以了。具体可以参考这里:https://www.cnblogs.com/Nonnetta/p/10175662.html 

0
0

Spring Security技术栈开发企业级认证与授权

Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全

2662 学习 · 1561 问题

查看课程