JJWTを使用してToken検証を完了

4468 ワード

先周上司の命令を受けて、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;
}