From ccf975f02d48739f108b4a4a4640592c32d62728 Mon Sep 17 00:00:00 2001 From: fanxb Date: Tue, 10 Dec 2019 15:27:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=A1=A5=E5=85=A8sso=E5=8D=95=E7=82=B9?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/infinova/sso/SsoApplication.java | 2 ++ .../com/infinova/sso/controller/JwtController.java | 5 +++++ .../java/com/infinova/sso/service/JwtService.java | 17 ++++++++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/SsoApplication.java b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/SsoApplication.java index 4b2cd6d..2f2c2dc 100644 --- a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/SsoApplication.java +++ b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/SsoApplication.java @@ -2,10 +2,12 @@ package com.infinova.sso; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController +@EnableScheduling public class SsoApplication { public static void main(String[] args) { diff --git a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/controller/JwtController.java b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/controller/JwtController.java index 274d51d..000689c 100644 --- a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/controller/JwtController.java +++ b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/controller/JwtController.java @@ -37,6 +37,11 @@ public class JwtController { return ReturnEntity.successResult(service.checkJwt(token)); } + @GetMapping("/refreshJwt") + public ReturnEntity refreshJwt(String token){ + return ReturnEntity.successResult(service.refreshJwt(token)); + } + @GetMapping("/inValid") public ReturnEntity inValid(String token) { service.inValid(token); diff --git a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/service/JwtService.java b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/service/JwtService.java index d1159f9..a7c9dea 100644 --- a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/service/JwtService.java +++ b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/service/JwtService.java @@ -1,5 +1,6 @@ package com.infinova.sso.service; +import com.auth0.jwt.interfaces.Claim; import com.infinova.sso.entity.User; import com.infinova.sso.exception.CustomException; import com.infinova.sso.util.JwtUtil; @@ -20,7 +21,6 @@ import java.util.*; * @date 2019/3/4 18:17 */ @Service -@EnableScheduling public class JwtService { public static final String JWT_KEY = "jwt_token"; @@ -60,6 +60,21 @@ public class JwtService { } } + /** + * 过期时间小于半小时,返回新的jwt,否则返回原jwt + * @param jwt + * @return + */ + public String refreshJwt(String jwt){ + String secret = RedisUtil.redisTemplate.opsForValue().get(jwt); + Map map = JwtUtil.decode(jwt,secret); + if(map.get("exp").asLong()*1000 - System.currentTimeMillis()/1000<30*60*1000){ + return this.generateNewJwt(map.get("name").asString()); + }else{ + return jwt; + } + } + /** * Description: 生成新的jwt,并放入jwtMap中