内容简介:译见|构建用户管理微服务(一):定义领域模型和 REST API
译见系列 道客船长「译见」系列,关注国外云计算领域的技术和前沿趋势,每周为开发者提供精选译文。
近期我们将持续更新《构建用户管理微服务》系列文章,敬请关注!
在《构建用户管理微服务》的第一部分中,我们会定义应用的需求,初始的领域模型和供前端使用的 REST API。 我们首先定义 用户注册 和 管理用户 的故事。
用户故事
在设计新系统时,值得考虑的是用户希望实现的结果。 下面您可以找到用户注册系统应具有的基本功能的列表。
- 作为 用户 ,我想注册,以便我可以访问需要注册的内容
- 作为 用户 ,我想在注册后确认我的电子邮件地址
- 作为 用户 ,我想登录并注销
- 作为 用户 ,我想更改我的密码
- 作为 用户 ,我想更改我的电子邮件地址
- 作为 用户 ,我想要重置我的密码,以便我忘记密码后可以登录
- 作为 用户 ,我想更新我的个人资料,以便我可以提供我正确的联络资料
- 作为 用户 ,我想关闭我的帐户,以便我可以关闭我与我注册的服务的关系
- 作为 管理员 ,我想手动管理(创建/删除/更新)用户,以便工作人员不必重新进行注册过程
- 作为 管理员 ,我想手动创建用户,这样工作人员就不用再过注册过程了
- 作为 管理员 ,我想列出所有用户,即使是那些曾经关闭帐户的用户
- 作为 管理员 ,我希望能够看到用户的活动(登录,注销,密码重置,确认,个人资料更新),以便我可以遵守外部审计要求
工作流程
我们来看看系统将要支持什么样的工作流程。首先,人们应该能够注册和登录,这些是相当明显的功能。
但是,处理确认令牌时需要谨慎。 由于它们可用于执行特权操作,因此我们使用一次性随机令牌来处理密码重置和电子邮件确认。
当一个新的令牌由用户生成,无论什么原因,所有以前的都是无效的。 当有人记住他们的密码时,以前发出的和有效的密码重置令牌必须过期。
非功能性需求
用户故事通常不会定义非功能性要求,例如安全性,开发原理,技术栈等。所以我们在这里单独列出。
- 领域模型是使用域驱动的设计原则在纯 Java 中实现的,并且独立于要使用的底层技术栈
- 当用户登录时,将为他们生成一个 JWT 令牌,有效期是 24 小时。在后续请求中包含此令牌,用户可以执行需要身份验证的操作
- 密码重置令牌有效期为 10 分钟,电子邮件地址确认令牌为一天
- 密码用加密算法(Bcrypt)加密,并且每用户加盐
- 提供了 RESTful API,用于与用户注册服务进行交互
- 应用程序将具有模块化设计,以便能够为各种场景提供单独的部署工件(例如,针对 Google App Engine 的 2.5 servlet 兼容 WAR 和其他用例的基于 Spring Boot 的自包含可执行 JAR)
- 实体标识符以数据库无关的方式生成,也就是说,不会使用数据库特定机制(AUTO_INCREMENT 或序列)来获取下一个 ID 值。解决方案将类似于 Instagram genetes ID。
领域模型
对于第一轮实现中,我们只关注三个实体,即用户,确认令牌和用户事件。
rest api
访问下面的大多数 API 都需要认证,否则返回一个 UNAUTHORIZED 状态码。 如果用户尝试查询属于某个其他用户的实体,则他们还会返回客户端错误(FORBIDDEN),除非他具有管理权限。 如果指定的实体不存在,则调用的端点返回 NOT_FOUND。
创建会话(POST /sessions)和注册新用户(POST / users)是公开的,它们不需要身份验证。
Session management
GET /session/{session_id}
如果没有给定 ID 的会话或者会话已经过期,则返回给定会话的详细信息或 NOT_FOUND。
POST /session
创建新会话,前提是指定的电子邮件和密码对属于一个有效的用户。
DELETE /session/{session_id}
删除给定的会话(注销)。
User management
GET /users/{user_id}
根据一个指定的 ID 查找用户。
GET /users
列举系统中所有的用户。
POST /users
注册一个新的用户。
DELETE /users/{user_id}
删除指定的用户。
PUT /users/{user_id}
更新指定用户的个人信息。
PUT /users/{user_id}/tokens/{token_id}
使用给定用户的令牌执行与令牌类型相关的操作。
原文链接: https://springuni.com/user-management-microservice-part-1
下期预告:构建用户管理微服务(二):实现领域模型
以上所述就是小编给大家介绍的《译见|构建用户管理微服务(一):定义领域模型和 REST API》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 使用 AutoAI 自动构建模型
- 新一代CMDB模型构建指南
- 使用TensorFlow构建LSTM模型详细教程
- Transformer - 设计和构建高效的时序模型
- 译见|构建用户管理微服务(二):实现领域模型
- 基于时间和地域构建一个网络诈骗形势模型
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mastering Regular Expressions, Second Edition
Jeffrey E F Friedl / O'Reilly Media / 2002-07-15 / USD 39.95
Regular expressions are an extremely powerful tool for manipulating text and data. They have spread like wildfire in recent years, now offered as standard features in Perl, Java, VB.NET and C# (and an......一起来看看 《Mastering Regular Expressions, Second Edition》 这本书的介绍吧!