我在令牌提供者的 JWT 令牌中设置了声明。现在我想在 API 被命中时通过身份验证获得声明值。
我已经检查了委托人、详细信息、证书和权限,但我没有收到任何索赔。
Claims claims = Jwts.claims().setSubject(authentication.getName());
claims.put(AUTHORITIES_KEY, authorities);
claims.put("userId", userRepo.findUserIdByUsername(authentication.getName()));
return Jwts.builder()
.setSubject(authentication.getName())
.setClaims(claims)
//.claim(AUTHORITIES_KEY, authorities)
.signWith(SignatureAlgorithm.HS512, SIGNING_KEY)
.setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis() + ACCESS_TOKEN_VALIDITY_SECONDS*1000))
.compact();
我想通过身份验证或任何其他方式从令牌中获取声明值来获取“userId”声明。
原文由 sameer nainawat 发布,翻译遵循 CC BY-SA 4.0 许可协议
这就是我从令牌中读取声明的方式
我将其用于 JWT
更多细节在这里
编辑 1:
添加过滤器以从请求和验证中获取令牌