图表API鉴权
online图表支持配置api地址获取数据,访问jeecg的接口,内置了token的设置,但是如果访问其他系统的接口,对于api接口鉴权需要重写鉴权方法。
鉴权接口IReportApiAuth方法介绍:
| 方法 | 返回值 | 描述 |
|---|---|---|
| getToken | String | 获取token,如果调用其他系统接口,需要用户自定义http请求获取token |
| isCache | boolean | 是否缓存token |
| cacheToken | void | 如果isCache为true 则缓存token,需要用户重写此方法 |
| setHeadersToken | void | 设置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;
}