【问题标题】:Set the nil value for session_id while session timeout - devise在会话超时时设置 session_id 的 nil 值 - 设计
【发布时间】:2013-12-03 09:56:40
【问题描述】:
在 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
【问题讨论】:
标签:
ruby-on-rails
session
devise
【解决方案1】:
您不需要将会话设置为零。你应该做reset_session,重置会话ID。
现在,你提到的那两个案例已经被devise处理了:
- 在创建会话时,设计一个
reset_session 来阻止会话固定
- 当您的会话过期时,您的会话会发生什么并不重要:您将
重定向到登录,登录后您的会话将再次重置
如果您应该将会话存储在表中,那么您可以做得更好,只需从数据库中删除过期的会话即可。如果您使用 redis 作为会话存储,您可以自动使会话过期,它会为您处理。
请注意:这很好,因为无论如何设计都不会允许过期的会话。
最后一句话:你为什么还在使用 1.4.2 版本?