跳到主要内容

图表API鉴权

online图表支持配置api地址获取数据,访问jeecg的接口,内置了token的设置,但是如果访问其他系统的接口,对于api接口鉴权需要重写鉴权方法。

鉴权接口IReportApiAuth方法介绍:

方法返回值描述
getTokenString获取token,如果调用其他系统接口,需要用户自定义http请求获取token
isCacheboolean是否缓存token
cacheTokenvoid如果isCache为true 则缓存token,需要用户重写此方法
setHeadersTokenvoid设置token到api请求的header中,需要用户重写

在online模块,已经预置了一个接口实现类 ReportApiAuthService

用户如需要自定义,可以extends该类或是implements IReportApiAuth

public class ReportApiAuthService implements IReportApiAuth {

@Autowired
private RedisUtil redisUtil;

@Override
public String getToken() {
// JEECG中通过request获取token
HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
return TokenUtils.getTokenByRequest(request);
}

@Override
public void cacheToken(String token) {
//此处缓存jeecg中使用的是redis 用户可根据自己项目制定缓存方法
redisUtil.set(TOKEN_KEY, token, 1800);
}

@Override
public void setHeadersToken(HttpHeaders headers) {
String token = null;
Object redisContent = redisUtil.get(TOKEN_KEY);
if(redisContent == null){
token = getToken();
}else{
token = redisContent.toString();
if(isCache()){
cacheToken(token);
}
}
// 设置请求header,传递token, 这里的X-Access-Token需要用户自己定义
headers.set("X-Access-Token", token);
}


@Override
public boolean isCache() {
return true;
}