feat:把hutool的jwt直接放入util中

This commit is contained in:
曾文豪
2024-08-23 11:38:29 +08:00
parent e57cd5e1c8
commit 856a9f01dd
18 changed files with 1954 additions and 9 deletions

View File

@@ -0,0 +1,122 @@
package com.tiesheng.util.jwt;
import java.util.Date;
/**
* 注册的标准载荷Payload声明
*
* @param <T> 实现此接口的类的类型
* @author looly
* @since 5.7.2
*/
public interface RegisteredPayload<T extends RegisteredPayload<T>> {
/**
* jwt签发者
*/
String ISSUER = "iss";
/**
* jwt所面向的用户
*/
String SUBJECT = "sub";
/**
* 接收jwt的一方
*/
String AUDIENCE = "aud";
/**
* jwt的过期时间这个过期时间必须要大于签发时间
*/
String EXPIRES_AT = "exp";
/**
* 生效时间定义在什么时间之前该jwt都是不可用的.
*/
String NOT_BEFORE = "nbf";
/**
* jwt的签发时间
*/
String ISSUED_AT = "iat";
/**
* jwt的唯一身份标识主要用来作为一次性token,从而回避重放攻击。
*/
String JWT_ID = "jti";
/**
* 设置 jwt签发者("iss")的Payload值
*
* @param issuer jwt签发者
* @return this
*/
default T setIssuer(String issuer) {
return setPayload(ISSUER, issuer);
}
/**
* 设置jwt所面向的用户("sub")的Payload值
*
* @param subject jwt所面向的用户
* @return this
*/
default T setSubject(String subject) {
return setPayload(SUBJECT, subject);
}
/**
* 设置接收jwt的一方("aud")的Payload值
*
* @param audience 接收jwt的一方
* @return this
*/
default T setAudience(String... audience) {
return setPayload(AUDIENCE, audience);
}
/**
* 设置jwt的过期时间("exp")的Payload值这个过期时间必须要大于签发时间
*
* @param expiresAt jwt的过期时间
* @return this
* @see #setIssuedAt(Date)
*/
default T setExpiresAt(Date expiresAt) {
return setPayload(EXPIRES_AT, expiresAt);
}
/**
* 设置不可用时间点界限("nbf")的Payload值
*
* @param notBefore 不可用时间点界限在这个时间点之前jwt不可用
* @return this
*/
default T setNotBefore(Date notBefore) {
return setPayload(NOT_BEFORE, notBefore);
}
/**
* 设置jwt的签发时间("iat")
*
* @param issuedAt 签发时间
* @return this
*/
default T setIssuedAt(Date issuedAt) {
return setPayload(ISSUED_AT, issuedAt);
}
/**
* 设置jwt的唯一身份标识("jti")
*
* @param jwtId 唯一身份标识
* @return this
*/
default T setJWTId(String jwtId) {
return setPayload(JWT_ID, jwtId);
}
/**
* 设置Payload值
*
* @param name payload名
* @param value payload值
* @return this
*/
T setPayload(String name, Object value);
}