spring 如何检查验证令牌jwt

y4ekin9u  于 2023-11-16  发布在  Spring
关注(0)|答案(2)|浏览(103)

我想通过rest API调用检查jwt token的有效性,是否有可能做到这一点?(如果可能的话,java,因为我有一个带有spring Boot 的Java后端和带有ReactJs的JavaScript前端)我已经用java生成了token,使用toeken jwt的其他服务。

p1tboqfb

p1tboqfb1#

我已经使用jsonwebtoken库完成了这一操作。您应该有用于加密jwt令牌的jwt密钥。您可以在rest API中使用这些方法:

public boolean validateJwtToken(String authToken) {
  try {
    Jwts.parserBuilder().setSigningKey(key()).build().parse(authToken);
    return true;
  } catch (MalformedJwtException e) {
    logger.error("Invalid JWT token: {}", e.getMessage());
  }
  return false;
}

private Key key() {
    return Keys.hmacShaKeyFor(Decoders.BASE64.decode(jwtSecret));
}

字符串
还需要以下依赖项:

<dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-api</artifactId>
        <version>0.11.5</version>
    </dependency>

    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-impl</artifactId>
        <version>0.11.5</version>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-jackson</artifactId>
        <version>0.11.5</version>
        <scope>runtime</scope>
    </dependency>

91zkwejq

91zkwejq2#

public boolean validateToken(String authToken) throws IOException {
    try {
        Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(authToken);
        return true;
    } catch (ExpiredJwtException e) {
        log.warn(Expired_JWT_TOKEN);
    } catch (UnsupportedJwtException e) {
        log.warn(INVALID_JWT_TOKEN);
    } catch (MalformedJwtException e) {
        log.warn(INVALID_JWT_TOKEN);
    } catch (SignatureException e) {
        log.warn(INVALID_JWT_TOKEN);
    } catch (IllegalArgumentException e) {
        log.warn("Token validation error {}", e.getMessage());
    }
    return false;
}

字符串

相关问题