EKP jd135 JWT 生成token
使用Java JWT库(通常是jjwt)生成JWT(JSON Web Token)的示例。JWT是一种用于在网络应用之间传递声明的安全方式。这段代码使用了HS256算法进行签名。
下面是代码的解释:
1. `Jwts.builder()`: 创建一个JWT生成器对象。
2. `setHeaderParam("alg", "HS256")`: 设置JWT的头部参数alg为HS256,表示使用HS256算法进行签名。
3. `setHeaderParam("typ", "JWT")`: 设置JWT的头部参数typ为JWT,表示JWT的类型。
4. `setIssuedAt(new Date())`: 设置JWT的签发时间为当前时间。
5. `setIssuer(appKey)`: 设置JWT的签发者为appKey,appKey应该是你的应用程序的标识符。
6. `setExpiration(expireDate)`: 设置JWT的过期时间为expireDate,expireDate应该是一个Date对象,表示JWT的有效期。
7. `signWith(SignatureAlgorithm.HS256, secretKey)`: 使用HS256算法和secretKey进行签名。
8. `compact()`: 生成最终的JWT字符串。
请注意,这段代码中的appKey和secretKey应该是你自己的应用程序的密钥,你需要将它们替换为实际的值。
另外,这段代码只是生成JWT的一部分,并没有包含任何声明(claims)。在实际使用中,你可能需要根据你的需求添加一些声明,例如用户ID、角色等信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | package com.landray.kmss.cmex.ssooauth.util; import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.apache.commons.lang.StringUtils; import java.util.Calendar; import java.util.Date; public class TokenUtil { //过期时间:秒 public static final int EXPIRE = 10 ; public static String getToken(String appKey, String secretKey) { if (StringUtils.isEmpty(secretKey)) { return null ; } Calendar nowTime = Calendar.getInstance(); nowTime.add(Calendar.SECOND, EXPIRE); //过期时间 Date expireDate = nowTime.getTime(); return Jwts.builder() .setHeaderParam( "alg" , "HS256" ) .setHeaderParam( "typ" , "JWT" ) .setIssuedAt( new Date()) .setIssuer(appKey) .setExpiration(expireDate) .signWith(SignatureAlgorithm.HS256, secretKey) .compact(); } /** * 解析 jwt */ public static boolean verifyToken(String token, String secretKey) { boolean validation = false ; Claims claims; try { claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody(); System.out.println( "claims--->" + claims); validation = true ; } catch (ExpiredJwtException e) { //此异常为生成的token过期异常 System.out.println( "token 已过期" + e.getClaims()); e.printStackTrace(); } catch (Exception e) { System.out.println( " Some other exception in JWT parsing !" ); e.printStackTrace(); } return validation; } public static void main(String[] args) { String token = getToken( "biBoard" , "secret" ); System.out.println(token); String token1 = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2ODM2MTk4OTcsImlzcyI6ImJpQm9hcmQiLCJleHAiOjE2ODM2MTk5MDZ9.ZHw3LDlPtxtNXS5cM0LHyjyXqspde1BzDwNaVvT_s1k" ; boolean validation = verifyToken(token1, "secret" ); System.out.println(validation); } } |
分类:
Landray
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效