黑马十次方项目day06-09之token设置过期时间

文章目录

      • 生成token设置过期时间
      • 解析token
      • token过期时的报错

生成token设置过期时间

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

import java.util.Date;

/**
 * 类名称:CreateJwt
 * 类描述:生成token的测试类
 *
 * @author: taohongchao
 * 创建时间:2019/2/13 19:26
 * Version 1.0
 */
public class CreateJwt {

    public static void main(String[] args){
        JwtBuilder jwtBuilder = Jwts.builder()
                .setId("666")  //登录用户的id
                .setSubject("小马")  //登录用户的名称
                .setIssuedAt(new Date()) //用户登录的时间
                .signWith(SignatureAlgorithm.HS256,"itcast")//头部信息 第一个参数为加密方式为哈希 256  第二个参数为加的盐为itcast
                .setExpiration(new Date(new Date().getTime()+60000)); //设置token 的过期时间为一分钟

        System.out.println(jwtBuilder.compact());
    }
}

只需在原有的生成 token 的地方, 加上一个方法为setExpiration,代表生成token的过期时间.
这里设置的是一分钟.

运行该main方法, 生成的token如下
eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLlsI_pqawiLCJpYXQiOjE1NTAwNTk5MjAsImV4cCI6MTU1MDA1OTk4MH0.buu_7MM4KCU3nZJNGrzwQD2V0X0QGL51K7dfeZ9JCLU

解析token

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

import java.text.SimpleDateFormat;

/**
 * 类名称:ParseJwtTest
 * 类描述:TODO
 *
 * @author: taohongchao
 * 创建时间:2019/2/13 19:48
 * Version 1.0
 */
public class ParseJwtTest {

    public static void main(String[] args){
        Claims claims = Jwts.parser().setSigningKey("itcast") //指定
                .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLlsI_pqawiLCJpYXQiOjE1NTAwNTk5MjAsImV4cCI6MTU1MDA1OTk4MH0.buu_7MM4KCU3nZJNGrzwQD2V0X0QGL51K7dfeZ9JCLU")
                .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()));
    }

}

运行该main方法, 得到的结果如下
黑马十次方项目day06-09之token设置过期时间_第1张图片

token过期时的报错

当该token过期时,直接报错,因此在实际项目中,需要把解析token进行try catch
报错如下

Exception in thread "main" io.jsonwebtoken.ExpiredJwtException: JWT expired at 2019-02-13T20:13:00+0800. Current time: 2019-02-13T20:14:55+0800
	at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:365)
	at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:458)
	at io.jsonwebtoken.impl.DefaultJwtParser.parseClaimsJws(DefaultJwtParser.java:518)
	at com.tensequare.jwt.ParseJwtTest.main(ParseJwtTest.java:20)

你可能感兴趣的:(十次方,十次方项目)