diff options
| author | 刘永强 <[email protected]> | 2020-08-27 20:23:01 +0800 |
|---|---|---|
| committer | 刘永强 <[email protected]> | 2020-08-27 20:23:01 +0800 |
| commit | a3a15a906fa230bb29ed3249ab00258ac5352cc1 (patch) | |
| tree | 1e1206d8f6176a092251c9d39d7439cfcb3be51b | |
| parent | 3aaf25de8317eb4b217d24588b0d998439fded87 (diff) | |
解决ArangoDB在服务重启后,缓存中的Token失效的问题
5 files changed, 29 insertions, 24 deletions
diff --git a/galaxy-auth-center/config/application-dev.properties b/galaxy-auth-center/config/application-dev.properties index 1d72605..7596835 100644 --- a/galaxy-auth-center/config/application-dev.properties +++ b/galaxy-auth-center/config/application-dev.properties @@ -22,6 +22,6 @@ arango.username=query #Arango密码 arango.password=ceiec2018 #ArangoJWT授权地址 -arango.authurl=http://192.168.44.12:8529/_db/ip-learning-test/_open/auth +arango.authurl=http://192.168.44.12:8529/_db/tsg_galaxy_v3/_open/auth #Arango数据查询地址 -arango.query.url=http://192.168.40.182:8529/_db/ip-learning-test/_api/cursor
\ No newline at end of file +arango.query.url=http://192.168.44.12:8529/_db/tsg_galaxy_v3/_api/cursor
\ No newline at end of file diff --git a/galaxy-auth-center/config/application-prod.properties b/galaxy-auth-center/config/application-prod.properties index 1d72605..7596835 100644 --- a/galaxy-auth-center/config/application-prod.properties +++ b/galaxy-auth-center/config/application-prod.properties @@ -22,6 +22,6 @@ arango.username=query #Arango密码 arango.password=ceiec2018 #ArangoJWT授权地址 -arango.authurl=http://192.168.44.12:8529/_db/ip-learning-test/_open/auth +arango.authurl=http://192.168.44.12:8529/_db/tsg_galaxy_v3/_open/auth #Arango数据查询地址 -arango.query.url=http://192.168.40.182:8529/_db/ip-learning-test/_api/cursor
\ No newline at end of file +arango.query.url=http://192.168.44.12:8529/_db/tsg_galaxy_v3/_api/cursor
\ No newline at end of file diff --git a/galaxy-auth-center/src/main/java/com/mesalab/auth/service/impl/AuthorizeServiceImpl.java b/galaxy-auth-center/src/main/java/com/mesalab/auth/service/impl/AuthorizeServiceImpl.java index f233a0b..7c768fe 100644 --- a/galaxy-auth-center/src/main/java/com/mesalab/auth/service/impl/AuthorizeServiceImpl.java +++ b/galaxy-auth-center/src/main/java/com/mesalab/auth/service/impl/AuthorizeServiceImpl.java @@ -5,7 +5,6 @@ import com.google.gson.Gson; import com.mesalab.auth.component.config.ArangoConfig; import com.mesalab.auth.service.AuthorizeService; import com.mesalab.common.annotation.SysLog; -import com.mesalab.common.dto.results.ArangoCursorResult; import com.mesalab.common.enums.CacheKeyEnum; import com.mesalab.common.exception.BusinessException; import com.mesalab.common.util.HttpClientUtil; @@ -16,7 +15,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.http.Header; import org.apache.http.message.BasicHeader; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.stereotype.Service; @@ -50,12 +48,12 @@ public class AuthorizeServiceImpl implements AuthorizeService { String cacheKey = CacheKeyEnum.ARONGO_JWT_KEY.getKey(); Object cacheVal = MemoryCache.getInstance().get(cacheKey); - log.info("从缓存中获取的Token为:{}",cacheVal); - if(Objects.nonNull(cacheVal)){ - if(tokenValidate(String.valueOf(cacheVal))){ + log.info("从缓存中获取的Token为:{}", cacheVal); + if (Objects.nonNull(cacheVal)) { + if (tokenValidate(String.valueOf(cacheVal))) { log.info("从缓存中获取的Token未失效!"); return String.valueOf(cacheVal); - }else{ + } else { log.info("从缓存中获取的Token已失效!"); } } @@ -66,14 +64,14 @@ public class AuthorizeServiceImpl implements AuthorizeService { String jwtStr; try { - String jsonRes = HttpClientUtil.httpPost(arangoConfig.getAuthUrl(),new Gson().toJson(params)); - params = new Gson().fromJson(jsonRes,Map.class); + String jsonRes = HttpClientUtil.httpPost(arangoConfig.getAuthUrl(), new Gson().toJson(params)); + params = new Gson().fromJson(jsonRes, Map.class); jwtStr = params.get(SysConstant.ARANGO_JWT_STR); - log.info("请求arango授权接口获取的jwt:{}",jwtStr); + log.info("请求arango授权接口获取的jwt:{}", jwtStr); //将jwt字符串做缓存处理,过期时间为7天 - MemoryCache.getInstance().put(cacheKey,jwtStr,604800); + MemoryCache.getInstance().put(cacheKey, jwtStr, 604800); } catch (BusinessException e) { - log.info("请求arango授权接口发生异常,异常信息:{}",e.getMessage()); + log.info("请求arango授权接口发生异常,异常信息:{}", e.getMessage()); throw new BusinessException(e.getMessage()); } @@ -81,20 +79,27 @@ public class AuthorizeServiceImpl implements AuthorizeService { } /** + * @param token: * @Description: 验证ArangoJwtToken是否有效 * @Author: liuyongqiang * @Date: 2020/8/27 18:07 - * @param token: * @return: boolean **/ @Override public boolean tokenValidate(String token) throws BusinessException { - Map queryMap = ImmutableMap.of("query",""); + Map queryMap = ImmutableMap.of("query", ""); String jwtStr = SysConstant.ARANGO_JWT_PRE.concat(token); Header header = new BasicHeader(HttpHeaders.AUTHORIZATION, jwtStr); - String res = HttpClientUtil.httpPost(arangoConfig.getQueryurl(),new Gson().toJson(queryMap), header); - ArangoCursorResult result = new Gson().fromJson(res,ArangoCursorResult.class); - return result.getErrorNum()!=11;//errorNum为11代表token失效 + try { + HttpClientUtil.httpPost(arangoConfig.getQueryurl(), JsonMapper.toJsonString(queryMap), header); + } catch (BusinessException e) { + if (e.getErrorMessage() != null && e.getErrorMessage().contains("not authorized to execute this request")) { + return false; + } else { + return true; + } + } + return true; } } diff --git a/galaxy-data-engine/config/application-dev.properties b/galaxy-data-engine/config/application-dev.properties index d0634e5..d244b1e 100644 --- a/galaxy-data-engine/config/application-dev.properties +++ b/galaxy-data-engine/config/application-dev.properties @@ -42,8 +42,8 @@ druid.sqlTimeZone=Asia/Shanghai #arango数据库相关配置 arango.maxrows=10000 arango.login=http://galaxy-auth-center/authorize/arangoJwtLogin -arango.query.url=http://192.168.40.182:8529/_db/ip-learning-test/_api/cursor -arango.collection=http://192.168.40.182:8529/_db/ip-learning-test/_api/collection +arango.query.url=http://192.168.44.12:8529/_db/tsg_galaxy_v3/_api/cursor +arango.collection=http://192.168.44.12:8529/_db/tsg_galaxy_v3/_api/collection #clickhouse数据库相关配置 clickhouse.query.url=http://192.168.44.12:8123 clickhouse.dbname=tsg_galaxy_v3 diff --git a/galaxy-data-engine/config/application-prod.properties b/galaxy-data-engine/config/application-prod.properties index d0634e5..d244b1e 100644 --- a/galaxy-data-engine/config/application-prod.properties +++ b/galaxy-data-engine/config/application-prod.properties @@ -42,8 +42,8 @@ druid.sqlTimeZone=Asia/Shanghai #arango数据库相关配置 arango.maxrows=10000 arango.login=http://galaxy-auth-center/authorize/arangoJwtLogin -arango.query.url=http://192.168.40.182:8529/_db/ip-learning-test/_api/cursor -arango.collection=http://192.168.40.182:8529/_db/ip-learning-test/_api/collection +arango.query.url=http://192.168.44.12:8529/_db/tsg_galaxy_v3/_api/cursor +arango.collection=http://192.168.44.12:8529/_db/tsg_galaxy_v3/_api/collection #clickhouse数据库相关配置 clickhouse.query.url=http://192.168.44.12:8123 clickhouse.dbname=tsg_galaxy_v3 |
