提问人:Symonen 提问时间:11/8/2023 更新时间:11/20/2023 访问量:33
在 Clean Architecture 中从哪里获取权限数据?
Where to fetch data for permissions in Clean Architecture?
问:
使用干净的架构,我需要实现权限。
我决定实现额外的权限层 PermissionsChecker。 我的权限取决于数据库状态。我已将权限分配给数据库中的用户,这取决于域对象的状态。 我有数据库适配器。现在我应该使用该适配器在哪里获取数据?
- 我是否应该在用例级别获取数据并将其传递给 PermissionChecker?
- 或者我应该在权限层上获取数据?但是,PermissionChecker 将依赖于数据库端口。
- 还是其他我没有想到的解决方案?
答:
0赞
hatem87
11/20/2023
#1
正确答案取决于您的实际需求。 这取决于您面临的权限问题是数据访问问题还是功能访问问题。
虽然我认为这是一个功能访问问题,但我认为正如评论中提到的,将权限管理与数据库混合使用并不是一个好主意。 数据库只是一个存储工具,保持其角色尽可能简单。 在数据库或数据访问层中执行此操作将使您的设计成为一场噩梦。 在这种情况下,您会发现自己传入了用户标识并遍历了所有层,直到找到数据库。
如果您的项目分为 3 层:应用程序层(Web API、soap 等端点)、域层(业务层)、基础设施层。 就我个人而言,我认为权限管理是应用层的一部分。 或者它可以是另一层:应用层和域层之间的授权层。
这允许您在权限约束更改时保持域图层不可触及。 好的设计目标之一就是减少依赖关系对领域层的影响,而权限管理是一种依赖关系。
这也允许您测试/验证域层,而不管用户权限问题如何。
面向功能的设计可能对您的案例有用。
如果问题出在数据访问问题上,则意味着允许所有功能,但数据边界因用户而异,在这种情况下,我认为实现起来会更复杂。
评论