ruoyi文档中没有说明服务间调用传递token
1.ruoyi拦截器,可以看到服务间调用会从请求的请求头中去获取token
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
{
if (!(handler instanceof HandlerMethod))
{
return true;
}
SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID));
SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME));
SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY));
String token = SecurityUtils.getToken();
if (StringUtils.isNotEmpty(token))
{
LoginUser loginUser = AuthUtil.getLoginUser(token);
if (StringUtils.isNotNull(loginUser))
{
AuthUtil.verifyLoginUserExpire(loginUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser);
}
}
return true;
}
2. feign调用传递token
@FeignClient(contextId = "RemoteScaService", value = ServiceNameConstants.SCA_SERVICE, fallbackFactory = RemoteScaFallbackFactory.class)
public interface RemoteScaService
{
/**
* 上传文件
*
* @param lsScaFile 文件信息
* @return 结果
*/
@PostMapping("/ossFile")
public AjaxResult add(@RequestBody LsScaFile lsScaFile, @RequestHeader(SecurityConstants.FROM_SOURCE) String source,@RequestHeader(name = "Authorization",required = true) String token);
}
3. 调用方法时请求头放入token
String token = SecurityUtils.getToken();
AjaxResult add = remoteScaService.add(lsScaFile, ServiceNameConstants.SCA_SERVICE,token);
4. 然后就可以携带token访问了