【发布时间】:2021-10-01 14:00:54
【问题描述】:
我正在通过 Retrofit 访问 REST API,并且必须将不记名令牌添加到每个请求中。不记名令牌在一小时后过期,此时需要刷新。为了刷新令牌,我有一个 Retrofit Authenticator,当给出 401 并且 API 请求正常继续时,它会获取一个新的不记名令牌。我还有一个 OkHttp 拦截器,它将更新的令牌添加到每个请求中。我想将不记名令牌保存到 SharedPreferences 并让拦截器使用它,直到给出 401,然后再次调用 Authenticator。
我对 MVVM 非常陌生,不知道应该将令牌保存逻辑放在哪里。由于使用不记名令牌对访问数据至关重要,我认为身份验证器和拦截器处理保存/加载令牌可能是有意义的。这样做的一个缺点是这打破了关注点分离的规则。存储库处理这个是否有意义,如果可以,我该如何实现它?
使用 MVVM,这就是我想要管理数据的方式。
[ Retrofit ]-
- [Repository] - [ViewModel] - [View]
[SharedPreferences]-
非常感谢任何建议!
【问题讨论】:
标签: android kotlin mvvm retrofit sharedpreferences