在我正在工作的rails应用程序上,我有与设计的身份验证设置。我在用户模型中添加了一个名为"角色"的附加属性。它是一个简单的整数值,控制用户可以做什么。
我面临的问题是,我不确定如何确切地如何安全地分配这些角色。很明显,我不能在注册表单中只写一个字段。我能想到的最安全的方法是在所有帐户上强制值为0,当创建新的管理帐户时,我会在数据库中手动设置它,但这似乎很草率,有什么想法吗?
我相信有两种方法可以解决你的问题:
- 从rails控制台执行,如果你必须将某些用户标记为admin。 构建将用户标记为应用程序的管理员的功能,该功能仅暴露给管理员而不是普通用户。最初通过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
角色。