Authentication 用户认证设计,用户是人吗?

Authentication 用户认证设计,用户是人吗?,authentication,Authentication,这个应用程序是用RubyonRails编写的,但我面临的问题更多的是设计问题,而不是语言问题 该系统向多个用户提供维护注册表的服务。所以它把人和事物联系起来。因此,它有一个名为Person的模型表示所有者,还有一个名为User的模型表示管理注册表的人 现在出现了一个新的要求,允许人们登录并能够更改原始设计中不需要的个人详细信息 问题是如何重构应用程序以允许这种新需求 一个简单的解决方案是为每个请求登录凭据的人创建用户,并将用户链接到个人实体,但这并不是很简单,因为名字、姓氏等字段都在这两个类中,

这个应用程序是用RubyonRails编写的,但我面临的问题更多的是设计问题,而不是语言问题

该系统向多个用户提供维护注册表的服务。所以它把人和事物联系起来。因此,它有一个名为Person的模型表示所有者,还有一个名为User的模型表示管理注册表的人

现在出现了一个新的要求,允许人们登录并能够更改原始设计中不需要的个人详细信息

问题是如何重构应用程序以允许这种新需求

一个简单的解决方案是为每个请求登录凭据的人创建用户,并将用户链接到个人实体,但这并不是很简单,因为名字、姓氏等字段都在这两个类中,特别是人们可以更改的数据。此外,用户和个人存储在单独的表中


我考虑的另一种可能性是使一个表扩展另一个表,但将数据放在单独的表中会使它有点混乱。此外,逻辑扩展应该是用户如果要自下而上编写应用程序,您可以考虑理想情况下应该如何工作,然后找出如何在这与当前设置之间做出合理的折衷。以下是一些通用输入

由于涉及身份验证,您需要一个可以进行身份验证的“标识”。这可以是电子邮件地址和相关密码,以及电子邮件验证

一个身份可能与多个“角色”关联,使用该身份进行身份验证的人可以选择执行哪个角色,例如“我现在是管理员”与“我现在是常规站点用户”,并且该角色定义用户对登录身份的当前权限。或者,如果你不需要那种复杂程度,你可以说身份是一个(单一)角色

您需要在可能的“权限”和用户正在执行的角色之间进行一些跟踪。例如,最简单的设置可能是标识或角色具有一些布尔值,可以编辑配置文件或修改注册表属性

每当用户试图执行需要某些权限的操作时,只需查找用户正在执行的角色的相应权限集,以检查是否允许用户继续

对于您的应用程序,这可能只涉及为您的用户对象添加“can_change_registry”属性,并检查该属性是否适用于访问该站点部分的任何代码