使用JJWT完成Token验证

上周接到上级命令,需要完成提供给APP的后台接口功能,首先要解决的就是Token验证,token相信能看到此文章的都知道是什么东西了,因为查看之前的项目中,都是自己手写的,交给我完成我肯定就图方便(偷懒)使用了JJWT,在此做下记录而已

1.maven依赖


    io.jsonwebtoken
    jjwt
    0.9.0

2.创建TokenUtil类并提供创建和获取token信息的方法

2.1 createToken 主要是就设置各种值

public String createToken(String strUserId, String strOrgId) {
    SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
    long nowMillis = System.currentTimeMillis();
    long ttlMillis = nowMillis + (3600L * 1000L * time);
    Date now = new Date(nowMillis);
    Date exp = new Date(ttlMillis);
    HashMap, Object> claims = new HashMap, Object>();
    claims.put("orgId", strOrgId);
    JwtBuilder jwtBuilder = Jwts.builder()
            .setClaims(claims)
            .setId(id)
            .setIssuedAt(now)
            .setExpiration(exp)
            .setSubject(strUserId)
            .signWith(signatureAlgorithm, generalKey());
    return jwtBuilder.compact();
}

重点注意:setClaims 即 自定义的私有声明必须在前,不然会被覆盖

2.2 getToken

public Claims getToken(String token) throws Exception{
    Claims claims = Jwts.parser()
            .setSigningKey(generalKey())
            .parseClaimsJws(token)
            .getBody();
    return claims;
}

2.3 验证token

if(claims != null){
    String strUserId = claims.getSubject();
    request.setAttribute("userId", strUserId);
    String strOrgId = claims.get("orgId", String.class);
    request.setAttribute("orgId", strOrgId);
    return true;
}

你可能感兴趣的:(使用JJWT完成Token验证)