0

以下代码为jjwt 库定义了一个SigningKeyResolverAdapter

  private val parser = Jwts.parserBuilder().setSigningKeyResolver(object : SigningKeyResolverAdapter() {
        override fun resolveSigningKey(header: JwsHeader<*>, claims: Claims): Key {
            return runBlocking {
                keyRetriever.getPublicKey(header.keyId)
            }
        }
    }).build()

kotlin 编译失败并出现以下错误:

无法在 var 中推断类型参数 T!>

JwsHeader.keyId:字符串!以下替换均无

接收者:JwsHeader 参数:()

接收器:JwsHeader!> 参数:()接收器:

JwsHeader 参数:() 接收者:

JwsHeader!> 参数:() 接收者:

JwsHeader!>!> 参数:() 接收者:

JwsHeader!> arguments: () 可以

应用于接收者:JwsHeader<*> 参数:()

当线

keyRetriever.getPublicKey(header.keyId)

改为

keyRetriever.getPublicKey(header["kid"] as String)

一切正常。

我不明白为什么这种变化会有所作为。header.keyId 也返回一个字符串。

4

0 回答 0