diff --git a/.gitignore b/.gitignore index 970ffe6..1556306 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,4 @@ rebel.xml /.idea/ *.iml /static/ -/ipdb/ +/config/ diff --git a/springboot-ademo/src/main/java/com/tiesheng/demo/controller/TestController.java b/springboot-ademo/src/main/java/com/tiesheng/demo/controller/TestController.java index 8cbfdf9..19cdb81 100644 --- a/springboot-ademo/src/main/java/com/tiesheng/demo/controller/TestController.java +++ b/springboot-ademo/src/main/java/com/tiesheng/demo/controller/TestController.java @@ -1,7 +1,10 @@ package com.tiesheng.demo.controller; import cn.hutool.json.JSONUtil; +import cn.hutool.log.LogFactory; 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.pojos.MessageReqResp; import com.tiesheng.util.config.GlobalConfig; @@ -24,16 +27,23 @@ public class TestController { GlobalConfig globalConfig; @Autowired AliyunSmsConfig aliyunSmsConfig; + @Autowired + TsTokenConfig tsTokenConfig; @RequestMapping("/index") @TokenIgnore public ApiResp index() { + + TokenBean tokenBean = new TokenBean("11", "", "fdfd"); + LogFactory.get().info(tokenBean.toToken()); + return ApiResp.respOK("hello world"); } @RequestMapping("/redirect") @TokenIgnore public void redirect(HttpServletResponse response) { + tsTokenConfig.validToken("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NzU5MDc1MzEsImlkIjoiMTEiLCJlbnZpcm9ubWVudFR5cGUiOiIiLCJzZXJ2aWNlIjoiZmRmZCIsImV4dHJhIjoiIn0.Kn_6zCkeret0_b6ZkTBiJXie5lvJHoierJXQFqxHEGU", true); globalConfig.redirect("mobile", "/test", response); } diff --git a/springboot-login/src/main/java/com/tiesheng/login/config/token/TsTokenConfig.java b/springboot-login/src/main/java/com/tiesheng/login/config/token/TsTokenConfig.java index f8ed6e4..987db24 100644 --- a/springboot-login/src/main/java/com/tiesheng/login/config/token/TsTokenConfig.java +++ b/springboot-login/src/main/java/com/tiesheng/login/config/token/TsTokenConfig.java @@ -1,11 +1,13 @@ package com.tiesheng.login.config.token; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.servlet.ServletUtil; import cn.hutool.extra.spring.SpringUtil; import cn.hutool.jwt.JWT; +import cn.hutool.jwt.JWTValidator; import com.tiesheng.login.config.token.bean.TokenBean; import com.tiesheng.util.ServletKit; import com.tiesheng.util.exception.ApiException; @@ -66,10 +68,21 @@ public class TsTokenConfig { /** * 验证token * + * @param thrExp * @return */ public TokenBean validToken(boolean thrExp) { 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); if (tokenBean != null) { return tokenBean; @@ -77,15 +90,11 @@ public class TsTokenConfig { try { JWT decode = JWT.of(token); + JWTValidator.of(decode).validateDate(DateUtil.offsetDay(DateUtil.date(), 2)); String id = decode.getPayload("id").toString(); String environmentType = decode.getPayload("environmentType").toString(); String service = decode.getPayload("service").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.setExtra(extra); } catch (Exception ignored) { diff --git a/springboot-login/src/main/java/com/tiesheng/login/config/token/bean/TokenBean.java b/springboot-login/src/main/java/com/tiesheng/login/config/token/bean/TokenBean.java index 5c11159..7039026 100644 --- a/springboot-login/src/main/java/com/tiesheng/login/config/token/bean/TokenBean.java +++ b/springboot-login/src/main/java/com/tiesheng/login/config/token/bean/TokenBean.java @@ -1,5 +1,6 @@ package com.tiesheng.login.config.token.bean; +import cn.hutool.core.date.DateUtil; import cn.hutool.extra.spring.SpringUtil; import cn.hutool.jwt.JWT; import com.tiesheng.login.config.token.TsTokenConfig; @@ -31,11 +32,11 @@ public class TokenBean { public String toToken() { TsTokenConfig tsTokenConfig = SpringUtil.getBean(TsTokenConfig.class); return JWT.create() + .setExpiresAt(DateUtil.offsetHour(DateUtil.date(), tsTokenConfig.getExpireHours())) .setPayload("id", getId()) .setPayload("environmentType", getEnvironmentType()) .setPayload("service", getService()) .setPayload("extra", getExtra()) - .setPayload("time", System.currentTimeMillis() + tsTokenConfig.getExpireHours() * 1000 * 60 * 60) .setKey(tsTokenConfig.getEncryptKey().getBytes()) .sign(); }