会话变量是' session'或者' user_session'在Rails与Devise?

时间:2018-03-15 02:55:03

标签: ruby-on-rails ruby session devise session-variables

我想在Ruby on Rails应用程序的用户会话中存储非关键的非机密信息。使用Devise设置用户模型。我该怎么做呢?各种指南提供有关它的相互矛盾和不完整的信息。 session[:foo]user_session[:foo]?我需要设置一些东西才能使用它们 - 例如在设置会话变量之前获取gem,配置内容或插入任何行?

要提供上下文 - 用户可能会背靠背创建多个新项目,因此如果记住new表单并根据他们之前选择的内容预先选择了该类别,那将会很不错。如果有更好的方法,我可以接受建议。我对这一切都很陌生。谢谢!!

2 个答案:

答案 0 :(得分:2)

  

Rails中的会话变量是'session'还是'user_session'?

简单的答案是会话变量名为session

会话通常由值的散列和会话ID(通常是32个字符的字符串)组成,以标识散列。发送到客户端浏览器的每个cookie都包含会话ID。反之亦然:浏览器会在客户端的每个请求中将其发送到服务器。在Rails中,您可以使用会话方法保存和检索值:

session[:cat_id] = cat_id
Category.find(session[:cat_id])

您可以阅读有关会话的Rails Guide

ActionDispatch::Session::CookieStore

答案 1 :(得分:0)

可以通过session帮助程序方法访问默认的Rails会话对象。它允许您访问一些数据块,并绑定到存储在浏览器中的cookie值。

user_session助手由Devise gem提供。当用户在服务器上进行身份验证时,它通过限制对特定会话数据的访问来提供额外的安全性。