gpt4 book ai didi

android - 整洁架构和身份验证。正确的方法?

转载 作者:太空狗 更新时间:2023-10-29 16:25:46 26 4
gpt4 key购买 nike

我正在开发一个基于 Clean Architecture 模式的 Android 应用程序,我对如何以整洁的方式实现用户身份验证存疑。就整洁架构而言,以下解决方案是否整洁?

我会创建如下用例(从表示层执行):

  • LoginUseCase (对于提供的登录名和密码,通过远程服务获取 api token 并保存在本地 token 源中)
  • LogoutUseCase (从 LocalTokenSource 中清除 token )

(LocalTokenSource 接口(interface)将存储在域层中,其实现在数据层中 - 一种存储库)

为了在每次应用启动时执行 token 刷新(从用户的角度来看这不是一个用例,对吧?)我会创建 SessionManager域层中的组件。 SessionManager将负责刷新 token 并将其保存在 LocalTokenSource 中.每次 Activity 开始时,我都会从它的演示者那里执行 refreshToken()注入(inject) SessionManager.您如何看待该解决方案?

如果它是整洁的,那么如何处理将 token 传递给远程服务以执行其他需要 token 的 API 方法?可以说我有 PostsRepository从远程服务获取帖子数据。我是否应该将 token 从用例传递到存储库方法,如 repo.getPosts(token) ?或者输入 LocalTokenSource到存储库,以便它可以自己读取 token ?第二个选项不会违反整洁架构规则,因为LocalTokenSource会分两层使用吗?

最佳答案

您必须决定的核心问题是:您是要将授权(以及 token 的使用)建模为业务逻辑的一个方面,还是要将其视为“实现细节”。

如果您首先决定,为其提供专用用例,将 SessionManager 添加到域层并将 token 传递到存储库,这将是一个一致的建模。

如果您决定稍后,登录/注销/刷新以及 token 的存在可能最好保存在“幕后”,即在框架或网关层中。

这两种方法都遵循 Clean Architecture 的规则(只要您不违反依赖规则)。

关于android - 整洁架构和身份验证。正确的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54695384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com