我有一个关于 Rails 安全性的问题。假设我们有User模型,它有许多用于角色的布尔值,例如admin、director等。
管理员肯定会想要在表单上编辑这些值,所以我们希望使用attr_accessible让管理员用户执行此操作。
当然,其他用户也可以编辑他们的用户模型——或者编辑他们的个人资料,或者当他们自己邀请/添加新用户到系统时。在导演的情况下,我们实际上希望他们设置比导演“次要”的角色,但我们不希望他能够设置director或admin
由于我们暴露了这些修改用户的控制器,在这种情况下attr_accessible不允许设置director和设置吗?admin这听起来像是一个非常大的安全漏洞。
那么限制访问的最佳方法是什么?
设置每个参数,一次一个?
设置
admin = false和director = false创建/更新操作?最简单的解决方案,但在控制器中有这个有点讨厌。使用 if 语句查看该用户角色是否可以编辑这些属性并允许它?
使用 rails 回调?,例如
before_validationorbefore_save?其他一些声明性解决方案?
谢谢