fix:补全sso单点登录方法

This commit is contained in:
fanxb 2019-12-10 15:27:41 +08:00
parent 24c5b1077e
commit ccf975f02d
3 changed files with 23 additions and 1 deletions

View File

@ -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) {

View File

@ -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);

View File

@ -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<String, Claim> 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中