问题
决定从基于角色的授权切换到为用户提供单独的表的用例是什么?当一种方法比另一种更易于实现/维护时,是否有推荐的设计模式或约定?
细节
我正在构建一个 Rails 4.2+ 应用程序,但这个问题并不是严格意义上的 Ruby/Rails,尽管如果 Rails 有约定,我想听听它是什么。
在此应用程序中,客户输入并提交数据,但还需要能够查看其提交状态以及添加其他信息(文档、说明等)。这就是客户所做的一切:提交数据、检查提交状态并获取电子邮件通知。如果客户决定向多个帐户输入提交,它们可以关联到多个帐户。
另一方面,员工实际处理客户的提交并与单个帐户相关联。从理论上讲,员工也有可能成为客户并拥有自己的提交内容。
每种类型的用户的“视图层”都非常不同,每个人都扮演着非常不同的角色。这可以通过多个表以及基于角色的表来解决。
但是,每种类型用户的数据会有所不同。
例如,客户输入进入“客户”表以及几个关联表的个人信息,客户将在系统中被视为“联系人”。
另一方面,员工不需要在系统中拥有相同级别的个人信息,因为该信息仅在处理提交时需要。不过,如前所述,员工可能会成为客户,如果我进行基于角色的授权,实施起来将是一场噩梦。
员工还将有额外的身份验证要求,例如两步身份验证(客户不需要此)。
当我查看这个应用程序时,我真正看到的是 2 个不同的应用程序一起运行:客户端和员工端。
我看过的大多数研究和问题似乎都在不断地建议使用单个用户表并实施角色以进行授权。不过,这意味着我将在整个应用程序中使用大量条件。甚至在 SO 上的大多数其他开发人员(我在研究中遇到了几个类似的问题)似乎都看不起用户的多个表。