From 94c029646400b19bd17e137a1dcef7c855128a98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E9=A3=9E?= Date: Mon, 24 Aug 2020 11:05:01 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/security/epmet/EpmetUtils.java | 3 +- .../tools/security/jwt/JwtProperties.java | 41 ++++++++++ .../commons/tools/security/jwt/JwtUtils.java | 75 +++++++++++++++++++ 3 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/jwt/JwtProperties.java create mode 100644 epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/jwt/JwtUtils.java diff --git a/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/epmet/EpmetUtils.java b/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/epmet/EpmetUtils.java index c9cb91a..c77a4f3 100644 --- a/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/epmet/EpmetUtils.java +++ b/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/epmet/EpmetUtils.java @@ -2,9 +2,8 @@ package com.elink.esua.epdc.commons.tools.security.epmet; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; -import com.elink.esua.epdc.jwt.JwtUtils; +import com.elink.esua.epdc.commons.tools.security.jwt.JwtUtils; import lombok.Data; -import org.springframework.beans.factory.annotation.Autowired; import java.util.HashMap; import java.util.Map; diff --git a/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/jwt/JwtProperties.java b/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/jwt/JwtProperties.java new file mode 100644 index 0000000..a81ad87 --- /dev/null +++ b/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/jwt/JwtProperties.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + * + * https://www.renren.io + * + * 版权所有,侵权必究! + */ + +package com.elink.esua.epdc.commons.tools.security.jwt; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * Jwt + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +@Configuration +@ConfigurationProperties(prefix = "jwt") +public class JwtProperties { + private String secret; + private int expire; + + public String getSecret() { + return secret; + } + + public void setSecret(String secret) { + this.secret = secret; + } + + public int getExpire() { + return expire; + } + + public void setExpire(int expire) { + this.expire = expire; + } +} diff --git a/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/jwt/JwtUtils.java b/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/jwt/JwtUtils.java new file mode 100644 index 0000000..1bc528b --- /dev/null +++ b/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/security/jwt/JwtUtils.java @@ -0,0 +1,75 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + * + * https://www.renren.io + * + * 版权所有,侵权必究! + */ + +package com.elink.esua.epdc.commons.tools.security.jwt; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import org.joda.time.DateTime; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.Map; + +/** + * Jwt工具类 + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +@Component +public class JwtUtils { + private static final Logger logger = LoggerFactory.getLogger(JwtUtils.class); + + @Autowired + private JwtProperties jwtProperties; + + /** + * 生成jwt token + */ + public String generateToken(Long userId) { + return Jwts.builder() + .setHeaderParam("typ", "JWT") + .setSubject(userId+"") + .setIssuedAt(new Date()) + .setExpiration(DateTime.now().plusSeconds(jwtProperties.getExpire()).toDate()) + .signWith(SignatureAlgorithm.HS512, jwtProperties.getSecret()) + .compact(); + } + + public Claims getClaimByToken(String token) { + try { + return Jwts.parser() + .setSigningKey(jwtProperties.getSecret()) + .parseClaimsJws(token) + .getBody(); + }catch (Exception e){ + logger.debug("validate is token error, token = " + token, e); + return null; + } + } + public static String generateEpmetToken(Map claims, String Secret){ + return Jwts.builder() + .setHeaderParam("typ", "JWT") + .setClaims(claims) + .signWith(SignatureAlgorithm.HS512,Secret) + .compact(); + } + + /** + * token是否过期 + * @return true:过期 + */ + public boolean isTokenExpired(Date expiration) { + return expiration.before(new Date()); + } +}