首页 > 解决方案 > 生成和验证相同令牌时的签名异常

问题描述

我编写了一个 jwt 创建者,当我创建令牌时没有问题。但是当我从标题中收到它并检查它时,发生签名异常下面的代码有什么问题?

@Service
public class TokenManager {

    private static final int validity = 5 * 60 * 1000;
    Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);

    public String generateToken(String afId) {
        return Jwts.builder()
                .setSubject(afId)
                .setIssuer("www.asn.com")
                .setIssuedAt(new Date(System.currentTimeMillis()))
                .setExpiration(new Date(System.currentTimeMillis() + validity))
                .signWith(key)
                .compact();
    }

    public boolean tokenValidate(String token) {
        return getUsernameToken(token) != null && !isExpired(token);
    }

    public String getUsernameToken(String token) {
        Claims claims = getClaims(token);
        return claims.getSubject();
    }

    public boolean isExpired(String token) {
        Claims claims = getClaims(token);
        return claims.getExpiration().before(new Date(System.currentTimeMillis()));
    }

    private Claims getClaims(String token) {
        return Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody(); // SIGNATURE EXCEPTİON occurs
    }

}

标签: javaspringsecurityspring-securityjwt

解决方案


private static final Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);

这很好用。


推荐阅读