内容简介:译见|构建用户管理微服务(一):定义领域模型和 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 - 设计和构建高效的时序模型
- 译见|构建用户管理微服务(二):实现领域模型
- 基于时间和地域构建一个网络诈骗形势模型
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。