From 0e21fab9785fcdb9e69513dedaf166673ca155e4 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Thu, 17 Sep 2020 12:44:05 +0800 Subject: [PATCH] =?UTF-8?q?token=E7=BB=AD=E6=9C=9F=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=88=B0=E5=90=8E=E7=AB=AF&=E9=BB=98=E8=AE=A4=E6=9C=89?= =?UTF-8?q?=E6=95=88=E6=9C=9F=E5=BB=B6=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/common/core/constant/Constants.java | 2 +- .../com/ruoyi/gateway/filter/AuthFilter.java | 17 ++++++++++- ruoyi-ui/src/views/index.vue | 28 ------------------- 3 files changed, 17 insertions(+), 30 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java index 2cf6915df..4225eaa13 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java @@ -90,7 +90,7 @@ public class Constants /** * 令牌有效期(分钟) */ - public final static long TOKEN_EXPIRE = 30; + public final static long TOKEN_EXPIRE = 720; /** * 参数管理 cache key diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java index 03099dd64..36c72d6b6 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java @@ -18,8 +18,10 @@ import org.springframework.web.server.ServerWebExchange; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.ruoyi.common.core.constant.CacheConstants; +import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.gateway.config.properties.IgnoreWhiteProperties; import reactor.core.publisher.Mono; @@ -32,6 +34,8 @@ import reactor.core.publisher.Mono; public class AuthFilter implements GlobalFilter, Ordered { private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); + + private final static long EXPIRE_TIME = Constants.TOKEN_EXPIRE * 60; // 排除过滤的 uri 地址,nacos自行添加 @Autowired @@ -39,6 +43,9 @@ public class AuthFilter implements GlobalFilter, Ordered @Resource(name = "stringRedisTemplate") private ValueOperations sops; + + @Autowired + private RedisService redisService; @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) @@ -54,7 +61,7 @@ public class AuthFilter implements GlobalFilter, Ordered { return setUnauthorizedResponse(exchange, "令牌不能为空"); } - String userStr = sops.get(CacheConstants.LOGIN_TOKEN_KEY + token); + String userStr = sops.get(getTokenKey(token)); if (StringUtils.isNull(userStr)) { return setUnauthorizedResponse(exchange, "登录状态已过期"); @@ -66,6 +73,9 @@ public class AuthFilter implements GlobalFilter, Ordered { return setUnauthorizedResponse(exchange, "令牌验证失败"); } + + // 设置过期时间 + redisService.expire(getTokenKey(token), EXPIRE_TIME); // 设置用户信息到请求 ServerHttpRequest mutableReq = exchange.getRequest().mutate().header(CacheConstants.DETAILS_USER_ID, userid) .header(CacheConstants.DETAILS_USERNAME, username).build(); @@ -88,6 +98,11 @@ public class AuthFilter implements GlobalFilter, Ordered })); } + private String getTokenKey(String token) + { + return CacheConstants.LOGIN_TOKEN_KEY + token; + } + /** * 获取请求token */ diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue index 57a4739f2..4828d8806 100644 --- a/ruoyi-ui/src/views/index.vue +++ b/ruoyi-ui/src/views/index.vue @@ -35,7 +35,6 @@ import LineChart from './dashboard/LineChart' import RaddarChart from './dashboard/RaddarChart' import PieChart from './dashboard/PieChart' import BarChart from './dashboard/BarChart' -import { getToken, getExpiresIn, setExpiresIn } from '@/utils/auth' const lineChartData = { newVisitis: { @@ -67,39 +66,12 @@ export default { }, data() { return { - //刷新token锁 - refreshLock: false, - //刷新token的时间 - refreshTime: '', lineChartData: lineChartData.newVisitis } }, - created() { - this.refreshToken() - }, methods: { handleSetLineChartData(type) { this.lineChartData = lineChartData[type] - }, - // 实时检测刷新token - refreshToken() { - this.refreshTime = setInterval(() => { - if (null === getToken()) { - return; - } - const expires_in = getExpiresIn(); - if (expires_in <= 1200 && !this.refreshLock) { - this.refreshLock = true - this.$store - .dispatch('RefreshToken') - .catch(() => { - clearInterval(this.refreshTime) - }); - this.refreshLock = false - } - this.$store.commit("SET_EXPIRES_IN", expires_in - 10); - setExpiresIn(expires_in - 10); - }, 10000); } } }