当前位置:网站首页>jwt 的创建和验证 demo
jwt 的创建和验证 demo
2022-07-21 05:16:00 【Amy##】
pom.xml
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
import java.security.Key;
import java.util.Date;
public class JwtUtil {
/**
* 匹配jwt
* @param token
* @param base64Security
* @return
*/
public static Claims parseJwt(String token,String base64Security){
try {
Claims claims = Jwts.parser().setSigningKey(DatatypeConverter.parseBase64Binary(base64Security))
.parseClaimsJws(token).getBody();
return claims;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
/**
* 创建jwt
* @param name 用户名
* @param base64Security 密钥
* @param seconds 过期时间
* @return
*/
public static String createJwt(String name,String base64Security,Long seconds){
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
Long time = System.currentTimeMillis();
Date date = new Date(time+seconds*1000);
byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(base64Security);
Key signKey = new SecretKeySpec(apiKeySecretBytes,signatureAlgorithm.getJcaName());
JwtBuilder jwtBuilder = Jwts.builder().setHeaderParam("typ","JWT")
.claim("user_name",name)
.signWith(signatureAlgorithm,signKey)
.setExpiration(date);
return jwtBuilder.compact();
}
public static void main(String[] args) {
System.out.println(createJwt("aa","emhhbmdzYW4=",1800L));
System.out.println(parseJwt("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX25hbWUiOiJhYSIsImV4cCI6MTU5OTAxNjY1Nn0.XrK1TMWI4jfr0BnShdPDgyIAObigtws4b_NXrJJpbsA","emhhbmdzYW4="));
}
}
边栏推荐
- 二叉堆的c#实现
- 016:简单计算器
- Deduction record: dynamic programming 4 stock problems - 121122123188309714 the best time to buy and sell stocks (I, II, III, IV, including freezing period, including handling charges)
- D - AND and SUM (AtCoder Beginner Contest 238)
- Leetcode hash
- 第十周ACM训练报告
- XML explanation
- 1046. Weight of the last stone
- P/np/np complete /np hard
- unity 锁定相机绕锁定目标的弧形运动
猜你喜欢
Playable Director (TimeLine) 3D游戏的开场动画制作
HoloLens读取和下载Json文件问题(个人Hololens2进阶开发小总结二)
004: print characters
VMware虚拟机网络模式之NAT模式
62. Different paths
19. Delete the penultimate node of the linked list
背面剔除|无剔除模式与透明物体的绘制
Property analysis of matter protocol (II) multiple fabric and permission control
[oops framework] supporting hot update plug-ins
74. Search two-dimensional matrix
随机推荐
First week ACM training report
Merge sort
11th week ACM training report
2022acm summer training weekly report (III)
leetcode哈希
How to complete the design of RGB lamp Bluetooth mesh module from 0 to 1
寒假学习总结
844. Compare strings with backspace
004: print characters
【oops-framework】音频管理
Redis哨兵机制及配置过程
Atcoder beginer contest 218 problem solution
029: Tao Tao picks apples
【oops-framework】配套游戏配置数据生成 + 数据对象代码生成器插件
图集分离RGB和A通道之后的图片合并RGBA通道后导出原图
P2814 Genealogy (string parallel search set)
小实操:实现Myarray
关于Hololens2上AssetBundle资源管理、热更新问题(个人Hololens2进阶开发小总结三)
Creative programming / primary school group (grades 4-6) - Graphic Creativity
Mapping between sets and potential of sets