Rails默认为session_store.rb中指定的名称为每个用户设置会话。这些是我的session_store.rb文件的内容。
TestApp :: Application.config.session_store:cookie_store,key:'_ test_app_session'
我认为这是使用此文件的内容加密(如果错误,请更正)。 secret_token.rb。文件的内容是:
要求'securerandom'
def secure_token
token_file = Rails.root.join('.secret')
if File.exist?(token_file)
# Use the existing token.
File.read(token_file).chomp
else
# Generate a new token and store it in token_file.
token = SecureRandom.hex(64)
File.write(token_file, token)
token
end
end
TestApp::Application.config.secret_key_base = secure_token
问题是每次刷新页面时,我的会话 _test_app_session 内容都会发生变化。有人可以告诉我为什么吗?此外,如果它发生变化,那么我应该如何更改会话值?
另外,为什么rails默认需要设置会话?
答案 0 :(得分:0)
我认为rails默认情况下不会创建会话。据我所知,会话在轨道上是懒惰的。除非您操作应用程序中的session
变量(或某些宝石那样做),否则您不会设置会话cookie。
我仍然不太确定为什么会话的价值会发生变化。我认为这是因为时间戳表明会话的生命周期,但我没有找到证据。请参阅此问题:https://stackoverflow.com/questions/20028015/why-does-the-rails-session-cookie-change-with-each-request