【发布时间】:2020-04-29 12:51:47
【问题描述】:
我有一个使用 CQRS 的 Todo 应用程序。 我想检查执行创建/读取/更新操作的用户的一些权限。
给定:
- 我有2组
Office和Kitchen - 每个
Todo和User都必须属于一个组 - 每个用户都可以按照以下规则进行操作
规则:
- 用户可以阅读组中的 Todo(Office 中的 Todo 和 Office 中的用户)
- 如果 Todo 不在他们的组中,用户将无法阅读该 Todo(Office 中的 Todo 和 Kitchen 中的用户)
- 用户只能在其组中创建 Todo(用户在 Office 中,则 Todo 必须在 Office 中)
- ...
表格:Groups
| GroupId | GroupName |
| 1 | Office |
| 2 | Kitchen |
表格:Todo
| TodoId | GroupId |
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
表:User
|UserId | GroupId |
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
我想知道的:
- 应由哪一层负责检查上述规则(域、应用程序、基础架构)?
- 当我们认为我们正在使用 CQRS(在控制器(动作)、实体、查询/命令处理程序中)时,将这个控件放在哪里更合适?
请告诉我你的想法。
谢谢。
【问题讨论】:
-
我想这取决于你想要的复杂程度。显而易见的答案是,您希望基于命令的操作 CUD 位于命令端,而 R 位于读取端。层应该做他们正常做的事情,应用程序坐标,域包含规则。