jwt使用

263 阅读1分钟

环境

  • springboot

过程

1、pom依赖

<!--jwt的依赖 -->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.8.0</version>
        </dependency>

2、生成token

 private static final String JWTSECRET="myScrect";
    /**
     * 生成token
     */
    public static String create(User user){
       if (user==null || user.getId()==null ||user.getName()==null){
           return null;
       }
       String token= Jwts.builder()
               .setSubject(JWTSECRET) //设置签名
               .claim("id",user.getId()) //设置传入的参数
                .claim("name",user.getName())
                .setIssuedAt(new Date()) //设置发行的时间
                .setExpiration(new Date(System.currentTimeMillis()+2*60*1000)) //1分钟后过期
                .signWith(SignatureAlgorithm.HS256,JWTSECRET) //签名算法,密匙
                .compact();

       return token;
    }

3、校验token

/**
     * 校验token
     */
    public static Claims checkJWT(String token){
        //通常如果伪造或token过期都会抛出异常所有包裹一下

        try {
            final Claims claims=Jwts.parser()
                    .setSigningKey(JWTSECRET) //设置签名
                    .parseClaimsJws(token) //解析token
                    .getBody();
            return claims;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

4、测试

  /**
     * 生成token
     */
    @Test
    void contextLoads() {
        User user=new User();
        user.setId(1);
        user.setName("king");
        String token= JwtUtils.create(user);
        System.out.println(token);
    }
    /**
     * 解析
     */
    @Test
    public void TestCheck(){
        String token="eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJteVNjcmVjdCIsImlkIjoxLCJuYW1lIjoia2luZyIsImlhdCI6MTYwNDM3MzA2MiwiZXhwIjoxNjA0MzczMTgyfQ.SVY9GkX912V4gSNaNTEpxV4iIZUeu1fxxUxYy7mvyVs";

        Claims claims= JwtUtils.checkJWT(token);
        System.out.println(claims);
        if (claims!=null){
            Integer id=(Integer) claims.get("id");
            String name=(String) claims.get("name");
            System.out.println(id+"---"+name);
        }
    }