使用 koin 时刷新 Ktor 中的身份验证令牌

问题描述 投票:0回答:1

我使用 Koin 作为依赖注入库来创建 ktor HttpClient:

val AppModule = module {
    single { provideClientService() }
}

fun provideClientService(preferences: SharedPreferences): HttpClient {

install(Auth){
    bearer {
        loadTokens {
            BearerTokens(sharedPreferences.getString("accessToken",""))      
        }
    }
}}

但是用户登录后,accessToken 没有更新。

我认为这是因为 koin 中的范围不同。 koin中有3种作用域:

  • 单一定义:创建一个在整个容器生命周期内持续存在的对象(无法删除)。

  • 工厂定义:每次创建一个新对象。寿命短。容器中没有持久化(无法共享)。

  • 作用域定义:创建一个与关联作用域生命周期持久绑定的对象。

所以我将客户端定义更改为factory,因为我希望在获得新令牌后更新它。现在我想知道这是正确的吗?

val AppModule = module {
    factory { provideClientService() }
}
access-token ktor koin auth-token koin-scope
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.