JwtUtil的内容

为指定内容生成一个jjwt:java json web token
(测试,其实是jwtUtil的内容)

package com.tensequare.jwt;

import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class CreateJwt {
    public static void main(String[] args) {
        JwtBuilder jwtBuilder = Jwts.builder()
                .setId("666")
                .setSubject("小马")
                .setIssuedAt(new Date())
                .signWith(SignatureAlgorithm.HS256, "itcast")
                .setExpiration(new Date(new Date().getTime()+60000))
                .claim("role", "admin");
        System.out.println(jwtBuilder.compact());
    }
}

在这里插入图片描述
setId:用户id
setSubject(用户名)
setIssuedAt(登录时间)
signWith(加密方式,盐值);
setExpiration(new Date(new Date().getTime()+60000));
自定义加密的属性(如填加用户角色)
claims是个Map,里面封装了很多的自定义的属性和get,

Jwts.builder().claim(“role”,“admin”).


当解析成功后返回的默认对象就是Claims
解析

package com.tensequare.jwt;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;

import java.text.SimpleDateFormat;

public class ParseJwtTest {
    public static void main(String[] args) {
        Claims claims = Jwts.parser()
                .setSigningKey("itcast")
                .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLlsI_pqawiLCJpYXQiOjE1Mzc5MzA2MjYsImV4cCI6MTUzNzkzMDY4Niwicm9sZSI6ImFkbWluIn0.IiffIMe0KdMFGfQNJVwOPqUiFHvOBSG_9Hp6pz_iHXs")
                .getBody();
        System.out.println("用户id:"+claims.getId());
        System.out.println("用户名:"+claims.getSubject());
        System.out.println("登录时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(claims.getIssuedAt()));
        System.out.println("过期时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(claims.getExpiration()));
        System.out.println("用户角色:"+claims.get("role"));
    }
}

将jwt相关文件放到common包下,其他服务依赖common包,然后其他在服务的属性中设置过期时间和盐值,各个服务的token过期时间盐值可以不同,其中盐值必须提供
JwtUtil的内容_第1张图片
在这里插入图片描述
jwtUtil是官方下载的
JwtUtil的内容_第2张图片
3)其他服务的resources下添加
JwtUtil的内容_第3张图片


你可能感兴趣的:(Java后端)