Ruby on rails 4 多表与基于角色的授权
问题 决定从基于角色的授权切换到为用户提供单独的表的用例是什么?当一种方法的实施/维护比另一种更干净时,是否有一种设计模式或惯例建议 详细信息 我正在构建一个Rails 4.2+应用程序,但这个问题并不是严格意义上的Ruby/Rails,尽管如果Rails有一个约定,我想听听它是什么 在此应用程序中,客户输入并提交数据,但还需要能够查看其提交的状态以及添加其他信息(文档、澄清等)。这就是客户端所做的一切:提交数据、检查提交的状态以及获取电子邮件通知。如果客户端决定向多个帐户提交,则可以将它们关联到多个帐户 另一方面,员工实际处理客户的提交,并与单个帐户关联。从理论上讲,员工也有可能成为客户并拥有自己的意见 每种类型的用户的“视图层”都非常不同,每个用户执行的角色都非常不同。这可以通过多个表以及基于角色的应用程序来解决 但是,每种类型用户的数据都会有所不同 例如,客户机将个人信息输入到“客户机”表以及多个关联表中,客户机将被视为系统中的“联系人” 另一方面,工作人员不需要在系统中拥有相同级别的个人信息,因为这些信息只是处理提交文件所必需的。不过,正如前面提到的,员工可能会成为客户,如果我执行基于角色的授权,这将是一场噩梦 员工还需要额外的身份验证要求,例如两步身份验证(客户不需要) 当我看这个应用程序时,我真正看到的是两个不同的应用程序一起运行:客户端和工作人员端Ruby on rails 4 多表与基于角色的授权,ruby-on-rails-4,authentication,authorization,access-control,abac,xacml,Ruby On Rails 4,Authentication,Authorization,Access Control,Abac,Xacml,问题 决定从基于角色的授权切换到为用户提供单独的表的用例是什么?当一种方法的实施/维护比另一种更干净时,是否有一种设计模式或惯例建议 详细信息 我正在构建一个Rails 4.2+应用程序,但这个问题并不是严格意义上的Ruby/Rails,尽管如果Rails有一个约定,我想听听它是什么 在此应用程序中,客户输入并提交数据,但还需要能够查看其提交的状态以及添加其他信息(文档、澄清等)。这就是客户端所做的一切:提交数据、检查提交的状态以及获取电子邮件通知。如果客户端决定向多个帐户提交,则可以将它们关联
我看到的大多数研究和问题似乎都在不断地建议使用单个用户表和实现角色进行授权。这意味着我会在整个应用程序中使用一堆条件。大多数其他开发人员(在我的研究中,我遇到了几个类似的问题)似乎看不起用户的多个表。我不习惯rails,所以我不确定在设计rails时是否应该有任何特殊考虑。这个问题似乎与身份验证无关,而是与授权有关 因此,您的系统具有以下功能:
- 客户
- 具有大量信息的个人资料
- 意见书视图
- 提交/状态
- 职员
- 处理意见书
- 查看待处理/已处理的提交
因此,如果你有客户角色和员工角色,这并不难,如果用户有客户档案,用户可以看到适当的功能,员工也是如此。您可以根据需要设计表,您可以有3个表,即用户表、员工表和客户表,其中根据角色为用户填充适当的表。请看多租户。以下是可能方案的说明和概述: 我相信您的情况,因为您还需要查看所有用户的数据,每个用户一个模式的数据库应该可以工作。这样,所有表都有相同的名称,只是另一个模式。您需要做的是
- 用户可以是客户或员工,甚至两者都可以
- 用户可以属于多个帐户
- 帐户包含提交的内容
- 投稿有创作者
- 客户端可以编辑他们创建的提交
- 如果提交的内容属于工作人员关联的帐户,则工作人员可以处理提交的内容
- 客户可以查看其所属帐户的所有提交
- 客户可以查看其所属帐户的所有提交
- 当且仅当submission.account位于user.assignedAccounts中时,角色==客户端的用户可以对类型==submission的对象执行操作==查看