如何从Authorization获取jwt令牌



我在Authorization中使用jwt令牌发送请求。我需要以某种方式取它,我尝试了这种方式:

@GetMapping
fun getUser(@AuthenticationPrincipal jwt: Jwt<*, *>): ResponseEntity<UserDto?> {
val allClaimsFromToken: Claims? = getAllClaimsFromToken(jwt.toString());
val userNameFromJwtToken: Any? = allClaimsFromToken?.get("sub");
....
}

不幸的是,作为jwt变量,我一直为null。你能告诉我我做错了什么吗?

可能最直接的方法是获取原始头值,然后用JJWT解析它。

@GetMapping
fun getUser(@RequestHeader (name="Authorization") tokenEncoded: String): ResponseEntity<UserDto?> {
Jwt myToken = Jwts.parserBuilder()    
.setSigningKey(yourKeyHere)
.build()
.parseClaimsJws(tokenEncoded.removePrefix("Bearer").trim());
// do something
}

您还可以考虑将Spring库用于OAuth2,它会自动执行更多操作。或者你可以创建一个过滤器来进行解析,这样你就不必在每次网络调用中重复这个了。

另请参阅这篇文章,了解从Spring Boot Rest控制器访问JWT令牌的更多想法。它是Java,但基本上是一样的。

最新更新