译见|构建用户管理微服务(一):定义领域模型和 REST API

译见系列  道客船长「译见」系列,关注国外云计算领域的技术和前沿趋势,每周为开发者提供精选译文。 近期我们将持续更新《构建用户管理微服务》系列文章,敬请关注! 在《构建用户管理微服务》的第一部分中,我们会定义应用的需求,初始的领域模型和供前端使用的 REST API。 我们首先定义用户注册和管理用户的故事。 用户故事 在设计新系统时,值得考虑的是用户希望实现的结果。 下面您可以找到用户注册系统应具有的基本功能的列表。 作为用户,我想注册,以便我可以访问需要注册的内容 作为用户,我想在注册后确认我的电子邮件地址 作为用户,我想登录并注销 作为用户,我想更改我的密码 作为用户,我想更改我的电子邮件地址 作为用户,我想要重置我的密码,以便我忘记密码后可以登录 作为用户,我想更新我的个人资料,以便我可以提供我正确的联络资料 作为用户,我想关闭我的帐户,以便我可以关闭我与我注册的服务的关系 作为管理员,我想手动管理(创建/删除/更新)用户,以便工作人员不必重新进行注册过程 作为管理员,我想手动创建用户,这样工作人员就不用再过注册过程了 作为管理员,我想列出所有用户,即使是那些曾经关闭帐户的用户 作为管理员,我希望能够看到用户的活动(登录,注销,密码重置,确认,个人资料更新),以便我可以遵守外部审计要求 工作流程 我们来看看系统将要支持什么样的工作流程。首先,人们应该能够注册和登录,这些是相当明显的功能。 但是,处理确认令牌时需要谨慎。 由于它们可用于执行特权操作,因此我们使用一次性随机令牌来处理密码重置和电子邮件确认。 当一个新的令牌由用户生成,无论什么原因,所有以前的都是无效的。 当有人记住他们的密码时,以前发出的和有效的密码重置令牌必须过期。 非功能性需求 用户故事通常不会定义非功能性要求,例如安全性,开发原理,技术栈等。所以我们在这里单独列出。 领域模型是使用域驱动的设计原则在纯 Java 中实现的,并且独立于要使用的底层技术栈 当用户登录时,将为他们生成一个 JWT 令牌,有效期是 24 小时。在后续请求中包含此令牌,用户可以执行需要身份验证的操作 密码重置令牌有效期为 10 分钟,电子邮件地址确认令牌为一天 密码用加密算法(Bcrypt)加密,并且每用户加盐 提供了 RESTful API,用于与用户注册服务进行交互 应用程序将具有模块化设计,以便能够为各种场景提供单独的部署工件(例如,针对 Google App Engine 的 2.5 servlet 兼容 WAR 和其他用例的基于 Spring … Continue reading 译见|构建用户管理微服务(一):定义领域模型和 REST API