提交 abb4bae3 编写于 作者: Tyl666's avatar Tyl666

【JWT鉴权续期接口】修改reflashToken逻辑

上级 833b6fba
...@@ -83,7 +83,7 @@ public class ClientAuthenticationResource ...@@ -83,7 +83,7 @@ public class ClientAuthenticationResource
} }
@PostMapping(value = "v7/reflashToken") @PostMapping(value = "v7/reflashToken")
public String reflashToken(@Validated @RequestBody @NotNull(message = "token不能为空") String oldToken) { public String refreshToken(@Validated @RequestBody @NotNull(message = "token不能为空") String oldToken) {
// 查询token里面的用户名 // 查询token里面的用户名
String username = jwtTokenUtil.getUsernameFromToken(oldToken); String username = jwtTokenUtil.getUsernameFromToken(oldToken);
// 根据用户名取缓存的用户对象 // 根据用户名取缓存的用户对象
...@@ -96,15 +96,18 @@ public class ClientAuthenticationResource ...@@ -96,15 +96,18 @@ public class ClientAuthenticationResource
// 如果为空则生成一个新token // 如果为空则生成一个新token
String newToken = jwtTokenUtil.generateToken(user); String newToken = jwtTokenUtil.generateToken(user);
// 存入缓存中 // 存入缓存中
tok = tokenReflashService.setToken(newToken, oldToken); tok = tokenReflashService.setToken(oldToken, newToken);
return tok.getNewToken(); return tok.getNewToken();
}else { }else {
// 如果时间还在半个小时以上,则继续使用该token // 如果时间还在半个小时以上,则继续使用该token,反之则刷新该token并返回新token
if(System.currentTimeMillis() - tok.getDate().getTime() >= (expiration / 4)){ if (System.currentTimeMillis() - tok.getDate().getTime() < (expiration / 4)) {
return tok.getNewToken(); // 如果为空则生成一个新token
String newToken = jwtTokenUtil.generateToken(user);
// 存入缓存中
tok = tokenReflashService.setToken(oldToken, newToken);
} }
return tok.getNewToken();
} }
return oldToken;
} }
@PostMapping(value = "v7/changepwd") @PostMapping(value = "v7/changepwd")
......
...@@ -15,7 +15,7 @@ import java.util.Date; ...@@ -15,7 +15,7 @@ import java.util.Date;
public class TokenReflashService { public class TokenReflashService {
@CachePut(value = "ibzuaa_users", key = "'token:'+#p0") @CachePut(value = "ibzuaa_users", key = "'token:'+#p0")
public Token setToken(String newToken, String oldToken) { public Token setToken(String oldToken, String newToken) {
Token tok = new Token(newToken, oldToken, new Date()); Token tok = new Token(newToken, oldToken, new Date());
return tok; return tok;
} }
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册