1414import top .cadecode .common .core .exception .CommonException ;
1515import top .cadecode .common .enums .FrameErrorEnum ;
1616
17+ import java .text .ParseException ;
1718import java .util .Date ;
1819import java .util .List ;
1920
@@ -33,19 +34,24 @@ public class TokenUtil {
3334 private Long refreshExpiration ;
3435 private String secret ;
3536
37+ private static final String ID_KEY = "id" ;
38+ private static final String NAME_KEY = "name" ;
39+ private static final String ROLES_KEY = "roles" ;
40+
3641 /**
3742 * 生成 token
3843 *
3944 * @param id 用户 ID
4045 * @param roles 角色
4146 * @return token 字符串
4247 */
43- public String generateToken (long id , List <String > roles ) {
48+ public String generateToken (long id , String name , List <String > roles ) {
4449 long expiredTime = System .currentTimeMillis () + expiration * 1000 ;
4550 JWSHeader jwsHeader = new JWSHeader (JWSAlgorithm .HS256 );
4651 JWTClaimsSet jwtClaimsSet = new JWTClaimsSet .Builder ()
47- .claim ("id" , id ).
48- claim ("roles" , roles )
52+ .claim (ID_KEY , id )
53+ .claim (NAME_KEY , name )
54+ .claim (ROLES_KEY , roles )
4955 .expirationTime (new Date (expiredTime )).build ();
5056 SignedJWT signedJWT = new SignedJWT (jwsHeader , jwtClaimsSet );
5157 try {
@@ -71,10 +77,41 @@ public JWTClaimsSet verifyToken(String token) {
7177 return signedJWT .getJWTClaimsSet ();
7278 }
7379 return null ;
74- } catch (CommonException e ) {
75- throw e ;
7680 } catch (Exception e ) {
7781 throw CommonException .of (FrameErrorEnum .JWT_VERIFY_ERROR ).suppressed (e );
7882 }
7983 }
84+
85+ /**
86+ * 从 claimsSet 获取 id
87+ *
88+ * @param claimsSet claims
89+ * @return id
90+ * @throws ParseException 转换异常
91+ */
92+ public long getIdFromClaims (JWTClaimsSet claimsSet ) throws ParseException {
93+ return claimsSet .getLongClaim (ID_KEY );
94+ }
95+
96+ /**
97+ * 从 claimsSet 获取 name
98+ *
99+ * @param claimsSet claims
100+ * @return name
101+ * @throws ParseException 转换异常
102+ */
103+ public String getNameFromClaims (JWTClaimsSet claimsSet ) throws ParseException {
104+ return claimsSet .getStringClaim (NAME_KEY );
105+ }
106+
107+ /**
108+ * 从 claimsSet 获取 roles
109+ *
110+ * @param claimsSet claims
111+ * @return roles
112+ * @throws ParseException 转换异常
113+ */
114+ public List <String > getRolesFromClaims (JWTClaimsSet claimsSet ) throws ParseException {
115+ return claimsSet .getStringListClaim (ROLES_KEY );
116+ }
80117}
0 commit comments