public String getSubject(String token) {
DecodedJWT verifier = null;
try {
Algorithm algorithm = Algorithm.HMAC256(apiSecret);
verifier = JWT.require(algorithm)
.withIssuer("voll med")
.build()
.verify(token);
verifier.getSubject();
} catch (JWTVerificationException exception){
// Invalid signature/claims
}
if(verifier.getSubject() == null) {
throw new RuntimeException("Verifier inválido");
}
return verifier.getSubject();
}
Me sale esta Exception:
java.lang.NullPointerException: Cannot invoke "com.auth0.jwt.interfaces.DecodedJWT.getSubject()" because "verifier" is null
Leí en una discusión anterior esta solución: "... Parece que el error se debe a que la variable "verifier" es nula y, por lo tanto, no se puede invocar el método "getSubject()". Una posible solución sería mover la línea "verifier.getSubject();" dentro del bloque "try", después de la verificación del token. De esta manera, si la verificación es exitosa, la variable "verifier" tendrá un valor y se podrá invocar el método "getSubject()". Quedaría así:"
DecodedJWT verifier = null;
try {
Algorithm algorithm = Algorithm.HMAC256(apiSecret); // validando firma
verifier = JWT.require(algorithm)
.withIssuer("voll med")
.build()
.verify(token);
} catch (JWTVerificationException exception) {
System.out.println(exception.toString());
}
if (verifier == null || verifier.getSubject() == null) {
throw new RuntimeException("Verifier invalido");
}
return verifier.getSubject();
Pero a mi no me funciona y me sigue indicando la misma Exception. Alguna ayuda por favor.