package com.ard.work.component.forest;
|
|
import com.ard.work.domain.receiver.AccessTokenReceiver;
|
import com.ard.work.service.IArdServerInfoService;
|
import com.dtflys.forest.http.ForestRequest;
|
import com.dtflys.forest.interceptor.ForestInterceptor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
import javax.annotation.Resource;
|
|
@Component
|
@Slf4j
|
public class TokenInterceptor implements ForestInterceptor {
|
@Resource
|
private IArdServerInfoService ardServerService;
|
|
/**
|
* 该方法在请求发送之前被调用, 若返回false则不会继续发送请求
|
*
|
* @Param request Forest请求对象
|
*/
|
@Override
|
public boolean beforeExecute(ForestRequest req) {
|
try {
|
String serverId = (String) req.getVariableValue("serverId");
|
AccessTokenReceiver accessToken = ardServerService.getAccessToken(serverId);
|
if (accessToken == null) {
|
log.warn("AccessToken 为 null, serverId={}", serverId);
|
return false; // 阻止请求继续
|
}
|
req.addHeader("x-cid", accessToken.getCompanyId());
|
req.addHeader("x-token", accessToken.getAccessToken());
|
} catch (Exception e) {
|
log.error("TokenInterceptor 处理异常:{}", e.getMessage());
|
return false;
|
}
|
return true;
|
}
|
}
|