feat: 去除hutool工具
This commit is contained in:
@ -12,11 +12,13 @@
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<dependencies>
|
||||
<!-- Project -->
|
||||
<dependency>
|
||||
<groupId>day.gitlab</groupId>
|
||||
<artifactId>dolphin-common-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- Spring Boot -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
@ -29,10 +31,12 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
<!-- Utilities -->
|
||||
<dependency>
|
||||
<groupId>io.jsonwebtoken</groupId>
|
||||
<artifactId>jjwt-api</artifactId>
|
||||
</dependency>
|
||||
<!-- Lombok -->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
|
||||
@ -1,71 +0,0 @@
|
||||
package day.gitlab.dolphin.common.security.jwt;
|
||||
|
||||
import cn.hutool.v7.crypto.digest.DigestUtil;
|
||||
import io.jsonwebtoken.Claims;
|
||||
import io.jsonwebtoken.Jwts;
|
||||
import io.jsonwebtoken.security.Keys;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.crypto.SecretKey;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
public class Jwt {
|
||||
|
||||
private final String secret;
|
||||
|
||||
private final long expire;
|
||||
|
||||
private final long refreshTokenExpire;
|
||||
|
||||
public Jwt(String secret, long expire, long refreshTokenExpire) {
|
||||
this.secret = secret;
|
||||
this.expire = expire;
|
||||
this.refreshTokenExpire = refreshTokenExpire;
|
||||
}
|
||||
|
||||
public String getTokenFromRequest(HttpServletRequest request) {
|
||||
String token = request.getHeader("Authorization");
|
||||
if (StringUtils.hasText(token) && token.startsWith("Bearer ")) {
|
||||
return token.substring(7);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String generateAccessToken(String userId) {
|
||||
return Jwts.builder()
|
||||
.subject(userId)
|
||||
.id(UUID.randomUUID().toString())
|
||||
.issuedAt(new Date())
|
||||
.expiration(new Date(System.currentTimeMillis() + expire))
|
||||
.claim("type", "access")
|
||||
.signWith(getSigningKey())
|
||||
.compact();
|
||||
}
|
||||
|
||||
public String generateRefreshToken(String userId) {
|
||||
return Jwts.builder()
|
||||
.subject(userId)
|
||||
.id(UUID.randomUUID().toString())
|
||||
.issuedAt(new Date())
|
||||
.expiration(new Date(System.currentTimeMillis() + refreshTokenExpire))
|
||||
.claim("type", "refresh")
|
||||
.signWith(getSigningKey())
|
||||
.compact();
|
||||
}
|
||||
|
||||
public Claims parseToken(String token) {
|
||||
return Jwts.parser()
|
||||
.verifyWith(getSigningKey())
|
||||
.build()
|
||||
.parseSignedClaims(token)
|
||||
.getPayload();
|
||||
}
|
||||
|
||||
private SecretKey getSigningKey() {
|
||||
byte[] keyBytes = DigestUtil.sha256(secret);
|
||||
return Keys.hmacShaKeyFor(keyBytes);
|
||||
}
|
||||
}
|
||||
@ -2,6 +2,7 @@ package day.gitlab.dolphin.common.security.jwt;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import day.gitlab.dolphin.common.core.i18n.MessagesHelper;
|
||||
import day.gitlab.dolphin.common.core.util.JWT;
|
||||
import day.gitlab.dolphin.common.security.Authentication;
|
||||
import day.gitlab.dolphin.common.security.AuthenticationInitialize;
|
||||
import day.gitlab.dolphin.common.security.AuthenticationProvider;
|
||||
@ -42,10 +43,8 @@ public class JwtAuthenticationInitialize implements AuthenticationInitialize {
|
||||
|
||||
@Override
|
||||
public Authentication initialize(HttpServletRequest request) {
|
||||
Jwt jwt = new Jwt(securityConfig.getSecret(), securityConfig.getExpire(), securityConfig.getRefreshTokenExpire());
|
||||
|
||||
// 1、获取Token
|
||||
String token = jwt.getTokenFromRequest(request);
|
||||
String token = getTokenFromRequest(request);
|
||||
if (token == null) {
|
||||
throw messagesHelper.newBusinessException(Exceptions.NOT_LOGIN);
|
||||
}
|
||||
@ -53,7 +52,7 @@ public class JwtAuthenticationInitialize implements AuthenticationInitialize {
|
||||
String userId;
|
||||
Date expiration;
|
||||
try {
|
||||
Claims claims = jwt.parseToken(token);
|
||||
Claims claims = JWT.parse(securityConfig.getSecret(), token);
|
||||
userId = claims.getSubject();
|
||||
expiration = claims.getExpiration();
|
||||
Objects.requireNonNull(userId);
|
||||
@ -91,4 +90,12 @@ public class JwtAuthenticationInitialize implements AuthenticationInitialize {
|
||||
|
||||
return new Authentication(userPrincipal, userAuthorities);
|
||||
}
|
||||
|
||||
private String getTokenFromRequest(HttpServletRequest request) {
|
||||
String token = request.getHeader("Authorization");
|
||||
if (StringUtils.hasText(token) && token.startsWith("Bearer ")) {
|
||||
return token.substring(7);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,12 +1,43 @@
|
||||
package day.gitlab.dolphin.common.security.jwt;
|
||||
|
||||
import day.gitlab.dolphin.common.core.util.JWT;
|
||||
import day.gitlab.dolphin.common.security.config.SecurityConfig;
|
||||
import io.jsonwebtoken.Claims;
|
||||
import io.jsonwebtoken.ClaimsBuilder;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class JwtInfo extends Jwt {
|
||||
import java.util.function.Function;
|
||||
|
||||
public JwtInfo(SecurityConfig securityConfig) {
|
||||
super(securityConfig.getSecret(), securityConfig.getExpire(), securityConfig.getRefreshTokenExpire());
|
||||
@Component
|
||||
public class JwtInfo {
|
||||
|
||||
public static final long EXPIRATION_7_DAY = 1000 * 3600 * 24 * 7;
|
||||
public static final long EXPIRATION_1_DAY = 1000 * 3600 * 24;
|
||||
public static final long EXPIRATION_1_HOUR = 1000 * 3600;
|
||||
|
||||
@Resource
|
||||
private SecurityConfig securityConfig;
|
||||
|
||||
public String generate(long expiration, Claims claims) {
|
||||
return JWT.generate(securityConfig.getSecret(), securityConfig.getExpire(), claims);
|
||||
}
|
||||
|
||||
public String generate(long expiration, Function<ClaimsBuilder, Claims> func) {
|
||||
return JWT.generate(securityConfig.getSecret(), securityConfig.getExpire(), func);
|
||||
}
|
||||
|
||||
public String generateAccessToken(String userId) {
|
||||
return JWT.generate(securityConfig.getSecret(), securityConfig.getExpire(), (builder) ->
|
||||
builder.subject(userId).add("type", "access").build());
|
||||
}
|
||||
|
||||
public String generateRefreshToken(String userId) {
|
||||
return JWT.generate(securityConfig.getSecret(), securityConfig.getRefreshTokenExpire(), (builder) ->
|
||||
builder.subject(userId).add("type", "refresh").build());
|
||||
}
|
||||
|
||||
public Claims parse(String token) {
|
||||
return JWT.parse(securityConfig.getSecret(), token);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user