JWT入门学习
jwt概述
JSON Web token简称JWT,是用于对应程序上的用户进行身份验证的标记,也就是说,使用JWT的应用程序不再需要保存与其有关的用户cookie或者session数据。此特性便于可伸缩性,同时保证应用程序的安全。
jwt内部结构
- jwt就是一个字符串,经过加密处理与校验处理的字符串,形式为:A.B.C
- A由jwt头部信息header加密得到
- B由jwt用到的身份验证信息json数据加密得到
- C由A和B加密得到,是校验部分
jwt鉴权流程
jwt入门案例
使用JWT工具,生成token,并将用户id和手机号码写入token中。
点击查看代码
@Test
public void createToken(){
//构建基础数据
Map<String, Object> userMap = new HashMap<>();
userMap.put("id",1);
userMap.put("phone","18312345678");
long now = System.currentTimeMillis();
//使用jwt工具类,生成token
String token = Jwts.builder().addClaims(userMap)//设置数据
//设置加密算法,添加密钥为:wzh666
.signWith(SignatureAlgorithm.HS256, "wzh666")
//设置过期时间
.setExpiration(new Date(now + 5000))
.compact();
System.out.println(token);
}
解析token
点击查看代码
@Test
public void parseToken(){
try {
String token="eyJhbGciOiJIUzI1NiJ9.1yJwaG9uZSI6IjE4MzEyMzQ1Njc4IiwiaWQiOjEsImV4cCI6MTY4NTg4ODI3N30.UK8NALoiCCXsAbMIyWTuoEKgJX9r5SWuWZNhXBbKNts";
Claims claims = Jwts.parser()
.setSigningKey("wzh666")
.parseClaimsJws(token)
.getBody();
Object id = claims.get("id");
Object phone = claims.get("phone");
System.out.println(id+"---"+phone);
}catch (ExpiredJwtException e){
System.err.println("token已过期");
}catch (SignatureException e){
System.out.println("token不合法");
}
}
token常见的两种异常
ExpiredJwtException:token过期
SignatureException:token不合法
分类:
Java / other
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理