1、简介
JSON Web token简称JWT, 是用于对应用程序上的用户进行身份验证的标记。也就是说, 使用 JWTS 的应用程序不再需要保存有关其用户的 cookie 或其他session数据。此特性便于可伸缩性, 同时保证应用程序的安全
2、格式
JWT就是一个字符串,经过加密处理与校验处理的字符串,形式为:A.B.C
A由JWT头部信息header加密得到
B由JWT用到的身份验证信息json数据加密得到
C由A和B加密得到,是校验部分
3、流程
4、示例
导入依赖:
<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency>
5、编写测试用例:
5.1生成token
@Test public void createJstTest() { //1,准备数据 HashMap map = new HashMap(); map.put("userid", "1234"); map.put("phone", "123456789"); //2,使用jwt的工具类生成token long now = System.currentTimeMillis();//获取系统当前时间,用来设置token过期时间 String token = Jwts.builder().signWith(SignatureAlgorithm.HS512, "boyang") .setClaims(map) .setExpiration(new Date(now + 60000)) //设置token过期时间 .compact(); System.out.println(token); }
5.2解析token
@Test public void parseJstTest(){ try { //生成token里生成的加密字符 String token = "eyJhbGciOiJIUzUxMiJ9.eyJwaG9uZSI6IjEyMzQ1Njc4OSIsImV4cCI6MTY1ODg0NDUyNywidXNlcmlkIjoiMTIzNCJ9.4suOXYrkNmX6HpZQulHrwMul_pKGmnmCezkvYR2KFO8CQLx7vqm8qBSmX0sY8nKC3lejDcDemvmvp_Fx8IcJTA"; Claims claims = Jwts.parser().setSigningKey("boyang") .parseClaimsJws(token) .getBody(); String userid = (String) claims.get("userid"); String phone = (String) claims.get("phone"); System.out.println(userid + "---" + phone); } catch (ExpiredJwtException e) { System.out.println("token已过期"); } catch (SignatureException e) { System.out.println("token错误"); } }
----------JWT本质来说就是一个字符串---------