什么是Jwt
全称:JSON Web Token ,一个JWT就是一个字符串,有三部分组成,分别是头部,载荷和签名
用途:保证用户和服务器之间传递安全可靠的信息
组成:
)
jwt验证:主要验证上图的【签证】部分是否合法
应用举例:如
利用jwt生成一个加密的token,作为用户登录的令牌,当用户登录成功后,发给客户端,请求需要登录的资源机或者接口的时候,将token携带,后端验证token是否合法
【案例演示】
基于springboot项目演示
导入依赖:
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
自定义工具类:
package com.lys.blog.utils;
import io.jsonwebtoken.Jwt;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.xmlunit.util.Mapper;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class JWTUtils {
// 秘钥
public static final String jwtToken = "lys123";
// 加密
public static String createToken(Long UserId) {
HashMap<String, Object> claims = new HashMap<>();
claims.put("userId", UserId);
JwtBuilder jwtBuilder = Jwts.builder()
.signWith(SignatureAlgorithm.HS256, jwtToken) //签发算法,秘钥是token
.setClaims(claims) //body数据,唯一,自定义设置
.setIssuedAt(new Date()) //设置签发时间
.setExpiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000));
String token = jwtBuilder.compact();
return token;
}
// 解密
public static Map<String, Object> checkToken(String token) {
try {
Jwt parse = Jwts.parser().setSigningKey(jwtToken).parse(token);
return (Map<String, Object>) parse.getBody();
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
测试:
public static void main(String[] args) {
Long userId = 12345L;
String token = JWTUtils.createToken(userId);
System.out.println("生成的token:\n" + token);
Map<String, Object> map = JWTUtils.checkToken(token);
System.out.println("解密后的数据:"+map.get("userId"));
}
结果:
以上是jwt应用的一个简单演示.
本次分享到这,下篇见!!!