我想为我的用户生成随机令牌。出于UX原因,我想在MyController#new
中生成此令牌,以便在new
视图中显示该令牌。然后我需要将它传递给create
方法。但是,我想阻止用户更改它。
我知道有3种方法可以做到:
create method
前两种方法并不安全,而最后一种方法则过度。
有没有办法在控制器中安全地将参数从new
传递到create
方法?
答案 0 :(得分:2)
Rails和#及以上版本的会话非常安全,因为它们是经过哈希处理的。官方图书馆说没有实际证据表明会话哈希遭到破坏,因此用户只能从浏览器中删除该令牌,但他们无法将其更改为逻辑上正确的值。
您可以做的是保存会话中的值并自己从该令牌创建哈希值,并将其保存在会话中,然后在接收端,您可以从会话重新生成哈希值并验证该值。
没有用户可以编辑它们匹配的会话值。如果它不匹配,您可以丢弃这些值并扔到错误页面。
我希望我能回答你,如果有任何误解请问。