代码之家  ›  专栏  ›  技术社区  ›  androidDeweleper

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

  •  0
  • androidDeweleper  · 技术社区  · 1 年前

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

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

    1 回复  |  直到 1 年前
        1
  •  1
  •   Ashish Rajvanshi    1 年前

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

    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)同步,以获得寿命更长的令牌。

    避免 SavedStateHandle 由于进程死亡限制和UI耦合问题,用于令牌存储。仅将其用于特定于UI的状态。

    推荐文章