通过设计委派用户角色的最安全方法是什么?



在我正在工作的rails应用程序上,我有与设计的身份验证设置。我在用户模型中添加了一个名为"角色"的附加属性。它是一个简单的整数值,控制用户可以做什么。

我面临的问题是,我不确定如何确切地如何安全地分配这些角色。很明显,我不能在注册表单中只写一个字段。我能想到的最安全的方法是在所有帐户上强制值为0,当创建新的管理帐户时,我会在数据库中手动设置它,但这似乎很草率,有什么想法吗?

我相信有两种方法可以解决你的问题:

  1. 从rails控制台执行,如果你必须将某些用户标记为admin。
  2. 构建将用户标记为应用程序的管理员的功能,该功能仅暴露给管理员而不是普通用户。最初通过rails控制台将需要的用户标记为admin,然后这些用户可以使用应用程序上的功能将其他用户标记为admin。

在视图端(在自定义的user#edit动作中),您可以将字段包装在if语句中:

<% if current_user.role > 3 %>
  ...field(s) go here...
<% end %>

在您的控制器中(在自定义user#update动作中),您可以使用类似的语句过滤出该参数,如果由于某种原因它在不应该传递的情况下传递了该参数:

if current_user.role <= 3
  params[:user][:role].delete
end

当然,我只是猜测"admin"角色是4,所以用正确的值替换它。并且您必须手动更改控制台中第一个user角色。

最新更新