我是 Ktor 的新手,正在致力于创建 oauth 功能, 我想实现 Oauth 功能,但我的 clientID 和 SecretKey 因用户而异。
我尝试参考以下官方文档,发现插件安装时需要设置ClientID和SecretKey。 https://ktor.io/docs/oauth.html
这不适合我的情况,因为我需要能够根据调用
/login
的用户设置ClientID和SecretID。
任何有关我如何实现这一目标的建议将不胜感激。
分配给
providerLookup
属性的块会在每次需要访问 OAuth2 设置的调用时执行。另外,在块中, this
指向 ApplicationCall
对象。因此,您可以在那里编写从数据库获取客户端凭据的逻辑。这是一个例子:
install(Authentication) {
oauth("oauth") {
providerLookup = {
// val clientId = db.query("...")
// val clientSecret = db.query("...")
OAuthServerSettings.OAuth2ServerSettings(
// ...
clientId = clientId,
clientSecret = clientSecret,
// ...
)
}
}
}