我有一个非常简单的示例端点,并且我正在尝试检查JWT声明中是否包含一个值:
@Path("/admin")
class AdminController(
val jwt: JsonWebToken
) {
companion object {
private val allowedAuthority = "api:can-manage-account"
}
@POST
@Path("/{accountId}")
@Produces(MediaType.APPLICATION_JSON)
fun initiateTransfer(@Context ctx: SecurityContext, @PathParam accountId: String) {
val authorities: List<String> = jwt.getClaim("authorities")
println(authorities.contains(allowedAuthority)) // false
}
}
authorities
是一个字符串数组。我看到的问题是,即使authorities
声明确实包含正确的值。 authorities.contains(allowedAuthority)
返回false。看来这是因为jwt.getClaim("authorities")
实际上返回了List<javax.json.JsonString>
。不幸的是,我似乎无法将JsonString
转换为java.lang.String
。另外,调用.toString()
并没有任何用处。我将如何查看该authorities
数组中是否有特定值?