替代在Rails中使用隐藏字段。确保安全

时间:2013-02-18 20:27:24

标签: ruby-on-rails ruby-on-rails-3

我正在建立一个帖子系统,用户的帖子总是必须由超级用户审核,除非他们是“经过验证”的用户(User.verified = true)

我打算在User模型中设置一个布尔列,:已验证,如果是,则允许他们发布和规避审核。

因此,当用户发布时...我知道我可以轻松地为帖子设置隐藏字段。例如,在我的帖子表单中,我可以添加

<%= f.hidden_field :approved, :value => 1 if current_user.verified == 1 %>

但是,我知道这不安全,任何人都可以轻松使用firebug来修改它。

将此逻辑移动到模型/控制器中的最佳做法是什么,或者是否存在覆盖此类事物的良好资源链接,覆盖或修改“默认”创建/更新操作?

感谢

根据下面的答案,这是我现在在Post模型中的内容:

#If user is verified, set approved column to true
before_save :check_for_verified

def check_for_verified
    approved = user.verified?
end

然而,它现在不允许我保存,它没有错误,只是不允许保存。

1 个答案:

答案 0 :(得分:4)

您觉得这不属于视图是正确的。

你可以通过很多方式解决这个问题。一种方法是在模型上设置before_create回调,如果用户已经过验证,则设置为已批准

class Post

before_create :approve_if_user_verified

def approve_if_user_verified
  approved = user.verified?
end