perf:token有效期调整
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -4,4 +4,4 @@ rebel.xml
|
|||||||
/.idea/
|
/.idea/
|
||||||
*.iml
|
*.iml
|
||||||
/static/
|
/static/
|
||||||
/ipdb/
|
/config/
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.tiesheng.demo.controller;
|
package com.tiesheng.demo.controller;
|
||||||
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import cn.hutool.log.LogFactory;
|
||||||
import com.tiesheng.annotation.token.TokenIgnore;
|
import com.tiesheng.annotation.token.TokenIgnore;
|
||||||
|
import com.tiesheng.login.config.token.TsTokenConfig;
|
||||||
|
import com.tiesheng.login.config.token.bean.TokenBean;
|
||||||
import com.tiesheng.message.config.aliyun.AliyunSmsConfig;
|
import com.tiesheng.message.config.aliyun.AliyunSmsConfig;
|
||||||
import com.tiesheng.message.pojos.MessageReqResp;
|
import com.tiesheng.message.pojos.MessageReqResp;
|
||||||
import com.tiesheng.util.config.GlobalConfig;
|
import com.tiesheng.util.config.GlobalConfig;
|
||||||
@@ -24,16 +27,23 @@ public class TestController {
|
|||||||
GlobalConfig globalConfig;
|
GlobalConfig globalConfig;
|
||||||
@Autowired
|
@Autowired
|
||||||
AliyunSmsConfig aliyunSmsConfig;
|
AliyunSmsConfig aliyunSmsConfig;
|
||||||
|
@Autowired
|
||||||
|
TsTokenConfig tsTokenConfig;
|
||||||
|
|
||||||
@RequestMapping("/index")
|
@RequestMapping("/index")
|
||||||
@TokenIgnore
|
@TokenIgnore
|
||||||
public ApiResp<String> index() {
|
public ApiResp<String> index() {
|
||||||
|
|
||||||
|
TokenBean tokenBean = new TokenBean("11", "", "fdfd");
|
||||||
|
LogFactory.get().info(tokenBean.toToken());
|
||||||
|
|
||||||
return ApiResp.respOK("hello world");
|
return ApiResp.respOK("hello world");
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/redirect")
|
@RequestMapping("/redirect")
|
||||||
@TokenIgnore
|
@TokenIgnore
|
||||||
public void redirect(HttpServletResponse response) {
|
public void redirect(HttpServletResponse response) {
|
||||||
|
tsTokenConfig.validToken("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NzU5MDc1MzEsImlkIjoiMTEiLCJlbnZpcm9ubWVudFR5cGUiOiIiLCJzZXJ2aWNlIjoiZmRmZCIsImV4dHJhIjoiIn0.Kn_6zCkeret0_b6ZkTBiJXie5lvJHoierJXQFqxHEGU", true);
|
||||||
globalConfig.redirect("mobile", "/test", response);
|
globalConfig.redirect("mobile", "/test", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package com.tiesheng.login.config.token;
|
package com.tiesheng.login.config.token;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.extra.servlet.ServletUtil;
|
import cn.hutool.extra.servlet.ServletUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import cn.hutool.jwt.JWT;
|
import cn.hutool.jwt.JWT;
|
||||||
|
import cn.hutool.jwt.JWTValidator;
|
||||||
import com.tiesheng.login.config.token.bean.TokenBean;
|
import com.tiesheng.login.config.token.bean.TokenBean;
|
||||||
import com.tiesheng.util.ServletKit;
|
import com.tiesheng.util.ServletKit;
|
||||||
import com.tiesheng.util.exception.ApiException;
|
import com.tiesheng.util.exception.ApiException;
|
||||||
@@ -66,10 +68,21 @@ public class TsTokenConfig {
|
|||||||
/**
|
/**
|
||||||
* 验证token
|
* 验证token
|
||||||
*
|
*
|
||||||
|
* @param thrExp
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public TokenBean validToken(boolean thrExp) {
|
public TokenBean validToken(boolean thrExp) {
|
||||||
String token = ServletUtil.getHeader(ServletKit.getRequest(), "token", "utf-8");
|
String token = ServletUtil.getHeader(ServletKit.getRequest(), "token", "utf-8");
|
||||||
|
return validToken(token, thrExp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证token
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public TokenBean validToken(String token, boolean thrExp) {
|
||||||
TokenBean tokenBean = isIgnored(token);
|
TokenBean tokenBean = isIgnored(token);
|
||||||
if (tokenBean != null) {
|
if (tokenBean != null) {
|
||||||
return tokenBean;
|
return tokenBean;
|
||||||
@@ -77,15 +90,11 @@ public class TsTokenConfig {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
JWT decode = JWT.of(token);
|
JWT decode = JWT.of(token);
|
||||||
|
JWTValidator.of(decode).validateDate(DateUtil.offsetDay(DateUtil.date(), 2));
|
||||||
String id = decode.getPayload("id").toString();
|
String id = decode.getPayload("id").toString();
|
||||||
String environmentType = decode.getPayload("environmentType").toString();
|
String environmentType = decode.getPayload("environmentType").toString();
|
||||||
String service = decode.getPayload("service").toString();
|
String service = decode.getPayload("service").toString();
|
||||||
String extra = decode.getPayload("extra").toString();
|
String extra = decode.getPayload("extra").toString();
|
||||||
Long expireTime = decode.getPayloads().getLong("time");
|
|
||||||
if (expireTime != null && expireTime < System.currentTimeMillis()) {
|
|
||||||
throw new ApiException("登录过期,请重新登陆");
|
|
||||||
}
|
|
||||||
|
|
||||||
tokenBean = new TokenBean(id, environmentType, service);
|
tokenBean = new TokenBean(id, environmentType, service);
|
||||||
tokenBean.setExtra(extra);
|
tokenBean.setExtra(extra);
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.tiesheng.login.config.token.bean;
|
package com.tiesheng.login.config.token.bean;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import cn.hutool.jwt.JWT;
|
import cn.hutool.jwt.JWT;
|
||||||
import com.tiesheng.login.config.token.TsTokenConfig;
|
import com.tiesheng.login.config.token.TsTokenConfig;
|
||||||
@@ -31,11 +32,11 @@ public class TokenBean {
|
|||||||
public String toToken() {
|
public String toToken() {
|
||||||
TsTokenConfig tsTokenConfig = SpringUtil.getBean(TsTokenConfig.class);
|
TsTokenConfig tsTokenConfig = SpringUtil.getBean(TsTokenConfig.class);
|
||||||
return JWT.create()
|
return JWT.create()
|
||||||
|
.setExpiresAt(DateUtil.offsetHour(DateUtil.date(), tsTokenConfig.getExpireHours()))
|
||||||
.setPayload("id", getId())
|
.setPayload("id", getId())
|
||||||
.setPayload("environmentType", getEnvironmentType())
|
.setPayload("environmentType", getEnvironmentType())
|
||||||
.setPayload("service", getService())
|
.setPayload("service", getService())
|
||||||
.setPayload("extra", getExtra())
|
.setPayload("extra", getExtra())
|
||||||
.setPayload("time", System.currentTimeMillis() + tsTokenConfig.getExpireHours() * 1000 * 60 * 60)
|
|
||||||
.setKey(tsTokenConfig.getEncryptKey().getBytes())
|
.setKey(tsTokenConfig.getEncryptKey().getBytes())
|
||||||
.sign();
|
.sign();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user