在会话超时时设置session_id的nil值 - 设计

时间:2013-12-03 09:56:41

标签: ruby-on-rails session devise

在rails 3.2.13项目中,我使用devise(1.4.2)插件进行身份验证系统。在这里,我需要在会话超时后将current_user的session_id更新为nil值。如何覆盖超时功能?

登录后,session_id字段将更新为“A9nEDMZFl7D4ytSfWxrY”。注销后,session_id字段将以nil值更新。现在我需要为会话到期更新相同的nil值。如何修改会话到期功能?

在会话的创建操作中,我使用Devise.friendly_token

更新session_id

1 个答案:

答案 0 :(得分:0)

您无需将会话设置为nil。您应该reset_session来重置会话ID。

现在,您提到的这两个案例已经由设计处理:

  • 在创建会话时,设计会reset_session阻止会话固定
  • 当你的会话过期时,会话发生的事情并不重要:你会的 重定向到登录,登录后会重新设置会话

如果您将会话存储在表中,那么您可以做得更好,只需从数据库中删除过期的会话。如果您使用redis作为会话存储,您可以自动使会话过期,它将为您处理。

请注意:这样做很高兴,因为无论如何都不会允许过期会话。

最后一句话:你为什么还在使用1.4.2版?