首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CQRS/ES -从读或写侧登录用户

CQRS/ES -从读或写侧登录用户
EN

Stack Overflow用户
提问于 2018-06-29 09:57:36
回答 1查看 1.4K关注 0票数 1

我正在使用事件源在CQRS中构建用户登录和身份验证。(使用AXON )

我的模型中的步骤是-

  1. 用户注册流程- UserRegistrationCommand处理用户注册,因为应用程序使用电子邮件使用户之间具有唯一性,这意味着只有一个用户可以在一封电子邮件中注册。(为此,我维护了read侧的表,其中包含注册的电子邮件地址。因此,当用户尝试注册时,我们查询读取端是否验证来自客户端(而不是写端)的电子邮件地址,并显示“此电子邮件已经注册”的消息)。当客户端验证通过时,UserRegistrationCommand由命令处理程序发出和处理,然后命令处理程序触发一个名为UserRegistredEvent的事件,该事件由读取端的事件处理程序处理,并更新读取侧DB。 2. UserLogin Flow -我对UserLogin有点困惑。 我脑子里有两种方法: 第一种方法- 用户登录使用读取端,意味着用户输入用户名和密码。该用户名和密码从读取端验证,从读取端触发UserLogedInEvent并由写入端捕获,并保存在事件存储中。

但是,我从未在任何架构图中看到过这样的情况:边触发边事件,边写边处理。

,我能这么做吗?

第二种方法-

代码语言:javascript
复制
 User login using write side , means the user issues UserLogingCommand 
 and before the command dispatch to command handler , we validate the 
 username and password using the read side by accessing the same public api 
 of read side (which was used in first approach). 

但问题是,我们不能在写端使用读取端(正如我在cqrs体系结构中所读和知道的那样)。但是,由于我使用的是公共API的读取端,所以我可以考虑,它可能是正确的。

那么你们建议的是哪种方法,还是有其他的方法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-29 12:54:49

我们不能在写端使用读取端(正如我在cqrs体系结构中所读和知道的那样)。

这并不完全正确。在计算写时使用读边数据没有什么错--您只需要知道延迟。

我从来没有在任何架构图中看到过边触发、事件和写处理的情况。

这是一种非常常见的模式--订阅者监视读取模型中的更改,并计算发送到写入模型的命令。如果您搜索“流程管理器”和“事件驱动体系结构”,您可能会找到您正在寻找的图表。

例如,Alice下了订单。因此,我们将其写在订单簿中,从而向计费服务和履行服务发送消息。

那么你们建议的是哪种方法

老实说?购买一个用于登录和身份验证的商品解决方案,然后转移到一个对核心业务有价值的问题上。

但是,如果您正在滚动您自己的,我认为您需要仔细看看您的延迟需求实际是什么,并从那里工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51099109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档