如何将访问令牌存储在内存、变量或SavedStateHandle中?

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

将访问令牌存储在 SavedStateHandle 中的问题是我们将表示层与数据层耦合,因为访问令牌的管理是数据层的任务。

我没有发现变量方法有太多问题,但只是想到使用 SavedStateHandle 作为一种可能的方法。

android kotlin android-multi-module
1个回答
0
投票

最佳方法:存储库中的内存缓存 使用内存变量将访问令牌存储在存储库中:

class TokenRepository {
    private var accessToken: String? = null

    fun getAccessToken() = accessToken
    fun saveAccessToken(token: String) { accessToken = token }
    fun clearAccessToken() { accessToken = null }
}

在您的 ViewModel 中,与存储库交互:

class MyViewModel(private val tokenRepository: TokenRepository) : ViewModel() {
    fun getToken() = tokenRepository.getAccessToken()
    fun setToken(token: String) = tokenRepository.saveAccessToken(token)
}

为什么有效:

  1. 将表示与数据层解耦。
  2. 有效处理令牌以进行会话限制使用。
  3. 如果需要,与持久存储(例如 SharedPreferences)同步以获取寿命较长的令牌。
由于进程死亡限制和 UI 耦合问题,避免使用

SavedStateHandle 进行令牌存储。仅将其用于特定于 UI 的状态。

© www.soinside.com 2019 - 2024. All rights reserved.