【发布时间】:2020-10-04 05:26:44
【问题描述】:
我希望能够对不同的 JWTAuth 错误做出不同的响应,因此自定义了挑战(以下是我一直用来测试的一些代码)。不幸的是,上下文为错误返回了一个空列表。我已经用过期的令牌进行了测试,根本没有令牌。
fun JWTAuthenticationProvider.Configuration.customConfigure() {
verifier(verifier)
realm = ISSUER
challenge { _, _ ->
call.respond(HttpStatusCode.Unauthorized, JSONObject(mapOf("err" to context.authentication.allErrors)))
}
validate {
if (it.payload.audience.contains(AUDIENCE)) {
it.payload.getClaim("id").asString().let { id -> userDao.getUserById(id) }
} else null
}
}
我想知道我是否遗漏了什么。希望有人能帮忙!
【问题讨论】:
-
我也不知道。我所做的是手动检查错误是什么,并在没有 JWT 配置功能的情况下相应地发送。
-
@NeelKamath 我也不介意这样做。有没有什么地方可以看到你是怎么做到的?我使用的是
statuspages,但我所能做的就是无缘无故地捕获错误,因此无法给出不同的响应。 -
我的代码相当做作,我可能误解了你的问题。但我所做的是让我自己的身份验证功能。我还没有在
JWTAuthenticationProvider.Configuration上创建扩展方法。每个需要身份验证的端点的第一行调用此函数,如果需要,throws 相关的Exception。 -
@NeelKamath 啊,我明白了。我已经在 Node 后端编写了自己的身份验证,所以也许我会在 Ktor 中做同样的事情。谢谢你的建议:)