2

我是 CQRS 的忠实粉丝,但我仍然无法弄清楚:您如何描述 CQRS 中的登录过程?因为它是一个查询(检查凭据)和一个命令(创建内存中/sql/任何会话状态)。在这种情况下,我们不能有异步命令,登录过程必须是同步的。

或者,CQRS 中可能不存在会话的概念,因为它暗示了某种状态?

雷米

4

2 回答 2

8

为什么首先要使用 CQRS 进行身份验证?这真的很不合适。

您可能会用某种身份验证/授权来包装您的命令处理程序。

请记住,CQRS 并非无处不在。它将用于有意义的有界上下文。用户和会话管理通常不是其中之一。

于 2012-12-11T09:13:09.103 回答
1

这完全取决于您的情况。

问题是:登录在您的应用程序中意味着什么?

如果它只是意味着用户通过了身份验证并且会话cookie存储在他的浏览器中,那么您只需阅读即可实现。例如,您的登录过程可能主要是由 Ajax 进行登录调用的客户端 JavaScript 代码;登录调用将简单地从读取存储(或 LDAP 存储或其他)读取并返回真/假结果。然后接收客户端将创建 cookie,用户现在被视为已登录。cookie 甚至可能包含用户名信息。

如果登录意味着登录的记录作为事件存储在数据库中,那么登录当然意味着执行Command. 在这里,我想创建一个同步的Command(并且可能是一个单独的登录服务,毕竟这是管道)是有意义的。

于 2012-12-10T13:58:16.510 回答