| | |
| | | package com.ard.work.component.forest; |
| | | |
| | | import com.ard.work.config.TyConfiguration; |
| | | import com.ard.work.domain.receiver.AccessTokenReceiver; |
| | | import com.ard.work.service.IArdServerInfoService; |
| | | import com.dtflys.forest.exceptions.ForestRuntimeException; |
| | | import com.dtflys.forest.http.ForestRequest; |
| | | import com.dtflys.forest.interceptor.Interceptor; |
| | | import com.dtflys.forest.http.ForestResponse; |
| | | 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<T> implements Interceptor<T> { |
| | | public class TokenInterceptor implements ForestInterceptor { |
| | | @Resource |
| | | private TyConfiguration tyConfiguration; |
| | | private IArdServerInfoService ardServerService; |
| | | |
| | | /** |
| | | * 该方法在请求发送之前被调用, 若返回false则不会继续发送请求 |
| | |
| | | */ |
| | | @Override |
| | | public boolean beforeExecute(ForestRequest req) { |
| | | log.info("invoke Simple beforeExecute"); |
| | | // 执行在发送请求之前处理的代码 |
| | | // 从缓存里获取token |
| | | AccessTokenReceiver accessToken = tyConfiguration.getAccessToken(); |
| | | req.addHeader("x-cid", accessToken.getCompanyId()); |
| | | req.addHeader("x-token", accessToken.getAccessToken()); |
| | | // req.addHeader("Authorization", "")); // 添加Header |
| | | // req.addQuery("username", "foo"); // 添加URL的Query参数 |
| | | return true; // 继续执行请求返回true |
| | | try { |
| | | String serverId = (String) req.getVariableValue("serverId"); |
| | | AccessTokenReceiver token = ardServerService.getAccessToken(serverId); |
| | | if (token == null) { |
| | | return false; // 阻止请求继续 |
| | | } |
| | | req.addHeader("x-cid", token.getCompanyId()); |
| | | req.addHeader("x-token", token.getAccessToken()); |
| | | } catch (ForestRuntimeException e) { |
| | | log.error("拦截器处理异常:{}", e.getMessage()); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | } |