jwt:json web token
使用jwt的好处
1,无状态
2解耦
3,更适合于移动端Android,ios
4,性能更好
5,能够不考虑csrf攻击
maven依赖
<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.6.0</version> </dependency>
①,客户端请求
Date date = new Date(); JwtBuilder signWith = Jwts.builder() .setId("2")//id .setSubject("冬马")//名字 .setIssuedAt(date)//创建时间 .signWith(SignatureAlgorithm.HS256,"salt")//签名算法,盐 .claim("role", "admin")//添加自定义属性 .setExpiration(new Date(date.getTime() + 1000 * 60))//一分钟过期 ; System.out.println(signWith.compact());
②,服务端接收
Claims body = Jwts.parser().setSigningKey("salt") .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIyIiwic3ViIjoi5Yas6amsIiwiaWF0IjoxNTQyODY0NzA5LCJyb2xlIjoiYWRtaW4iLCJleHAiOjE1NDI4NjQ3Njl9.cjALFF2h3YC5LwffcYSoEyRd9q14CT60Gp1dg5hf8vU") .getBody(); System.out.println("用户id:"+body.getId()); System.out.println("用户名:"+body.getSubject()); System.out.println("发布时间:"+body.getIssuedAt()); System.out.println("过期时间:"+body.getExpiration()); System.out.println("角色:"+body.get("role"));