会话ID在Rails中的每个页面刷新时更改

时间:2013-12-01 11:08:19

标签: ruby-on-rails session ruby-on-rails-4

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默认需要设置会话?

1 个答案:

答案 0 :(得分:0)

我认为rails默认情况下不会创建会话。据我所知,会话在轨道上是懒惰的。除非您操作应用程序中的session变量(或某些宝石那样做),否则您不会设置会话cookie。

我仍然不太确定为什么会话的价值会发生变化。我认为这是因为时间戳表明会话的生命周期,但我没有找到证据。请参阅此问题:https://stackoverflow.com/questions/20028015/why-does-the-rails-session-cookie-change-with-each-request