在我的项目中,rails为用户提供了一个CRUD,当我在两个不同浏览器的编辑视图中时,使用修改后的值更新一个用户,而在另一个浏览器中可以更新用户而不知道是否已经修改过。
如何避免这种行为?使用表格中的CRSF令牌?
非常感谢你 问候!
答案 0 :(得分:1)
我认为CSRF令牌不是你想要的。一种方法是散列表单可以更改的属性,并将该哈希值呈现给隐藏字段中的表单。 (请参阅http://www.ruby-doc.org/stdlib-1.9.3/libdoc/digest/rdoc/Digest.html以生成哈希。)提交表单时,在您从表单更新模型属性之前,将表单提交的哈希值与您在模型中的相同属性的哈希值进行比较即将更新。如果它们匹配,则表示自表单呈现以来模型未发生更改。
一种不太复杂的方法是仅通过模型的updated_at时间戳做大致相同的事情。