那么对于登录,因为它实际上并没有在数据库中创建任何新内容,而只是在我们登录后返回,可能还有一些用户数据,它应该是命令还是查询?
至于注册,既然创建了一个新用户,那么它应该是一个命令吗?如果我想返回用户数据或 jwt 怎么办?
我是否应该运行我的命令,并在客户端收到响应后立即运行查询?
最佳答案
对于大多数与设计相关的问题,我会用“视情况而定”来回答这个问题。我已经看到这两种解决方案在不同情况下实现。
您需要问的主要问题是,您是否将用户登录视为系统状态更改。请注意,它是否更改数据库中的状态无关紧要。系统不仅仅是数据库。
作为命令登录
对于某些系统,了解哪些用户已登录以及何时、从何处登录等很重要。我见过的一个例子是医疗系统,需要记录哪个医生何时何地登录,以及哪些医疗记录已被访问。此外,在一台机器上登录会停止另一台机器上的 session 。这些操作的可靠跟踪对于应用程序至关重要。因此,登录被实现为生成存储在事件存储中的事件的命令。投影为每个用户保留当前登录状态。
以查询方式登录
然而,我见过的大多数系统都需要简单地了解是否可以将任何给定凭据映射到用户帐户。如果是这种情况,将生成一个包含身份验证“证明”的 token 。系统本身并不真正关心谁登录了。只是每个请求都需要通过检查“证明”来验证。在这种情况下,登录是一个查询。
https://stackoverflow.com/questions/71797886/