Ruby on rails 会议';在Rails中的存储和过期
我是Ruby/Rails新手,我对Rails中的会话机制以及整个会话有一些疑问Ruby on rails 会议';在Rails中的存储和过期,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是Ruby/Rails新手,我对Rails中的会话机制以及整个会话有一些疑问 我读过Rails 4中的会话机制使用cookie作为 默认存储。这是真的吗 据我所知,会话在 关闭浏览器。我可以手动更改过期时间吗 提前谢谢 是,会话默认存储在cookie中。如果您在config/initializers/下查看,您将发现一个session\u store.rb文件,其中包含以下内容 Appname::Application.config.session_store :cookie_store, k
提前谢谢 是,会话默认存储在cookie中。如果您在
config/initializers/
下查看,您将发现一个session\u store.rb
文件,其中包含以下内容
Appname::Application.config.session_store :cookie_store, key: '_appname_session'
就覆盖此行为而言,您可以创建自定义cookie并将其过期日期设置为您想要的时间。一般来说,这就是创建身份验证时处理用户会话的方式。例如:
def sign_in(user)
cookies[:session_token] = { value: user.session_token, expires: 1.day.from_now }
self.current_user = user
end
然后使用该cookie持久化用户会话。是的,默认情况下会话存储在cookie中。如果您在
config/initializers/
下查看,您将发现一个session\u store.rb
文件,其中包含以下内容
Appname::Application.config.session_store :cookie_store, key: '_appname_session'
就覆盖此行为而言,您可以创建自定义cookie并将其过期日期设置为您想要的时间。一般来说,这就是创建身份验证时处理用户会话的方式。例如:
def sign_in(user)
cookies[:session_token] = { value: user.session_token, expires: 1.day.from_now }
self.current_user = user
end
然后使用该cookie来持久化用户会话。您可以使用初始化器中的
expire\u after设置超时
My::Application.config.session_store :active_record_store, {
key: "session_id",
domain: "domain.com",
expire_after: 12.hours,
}
您可以使用初始化器中的expire\u after
设置超时
My::Application.config.session_store :active_record_store, {
key: "session_id",
domain: "domain.com",
expire_after: 12.hours,
}
对
对
这两项都可以在config/initializers/session\u store.rb
中设置。例如:
MyApp::Application.config.session_store :cookie_store,
:key => '_my_app_session',
:expire_after => 30.minutes
对
对
这两项都可以在config/initializers/session\u store.rb
中设置。例如:
MyApp::Application.config.session_store :cookie_store,
:key => '_my_app_session',
:expire_after => 30.minutes
+1如果OP希望不同会话的到期时间不同,则此方法有效。如果要为所有会话设置全局过期时间,最好在session_store.rb中设置。是的,我看到了。事实上,直到看到你的答案我才知道+我也是!另外-我想为“登录”选项存储用户\u id-此值将使用session\u store.rb中的密钥加密,不是吗?我建议不要存储id
。创建一个唯一的令牌并存储它,因为如果一个人有足够的决心,加密可能会被破坏。使用用户id
可能会允许有人入侵任何用户的会话。最好创建一个随机令牌。+1如果OP希望不同会话的到期时间不同,则此选项有效。如果要为所有会话设置全局过期时间,最好在session_store.rb中设置。是的,我看到了。事实上,直到看到你的答案我才知道+我也是!另外-我想为“登录”选项存储用户\u id-此值将使用session\u store.rb中的密钥加密,不是吗?我建议不要存储id
。创建一个唯一的令牌并存储它,因为如果一个人有足够的决心,加密可能会被破坏。使用用户id
可能会允许有人入侵任何用户的会话。最好创建一个随机令牌。