会话变量 Rails

Session variable Rails

如何存储特定时间的会话变量?

或者如何在一定时间后重置变量?

我需要在事件发生 15 秒后使用 session.delete ('my_key')

默认情况下,Rails 将使用 CookieStore 来存储会话。这意味着所有会话数据都将存储在客户端的 cookie 中。而且,通过这种方式,你可以做一些事情

session['your_key'] = 'Session Content'
session['your_key_expired_at'] = Time.current + 15.minutes

然后,稍后(例如:authenticate_user),您可以查看

if session['your_key_expired_at'] < Time.current
   session.delete('your_key')
end

如果您希望用户关闭应用后数据仍然可用,您可以使用Cookies,如下

cookies[:your_key] = {:value => "session stuff"}, :expires => 15.minutes.from_now}

您可以使用 signed cookies 通过应用程序 secret_token 加密您的 cookie,就像使用 session

cookies.signed[:login] = {:value => @user.id, :expires => 1.day.from_now}

另一种选择,为了更安全,可以使用ActiveRecordStore来管理和存储session。您只需将会话 ID 传递给您的客户端,您就可以轻松地在服务器端管理您的会话,因为您知道它的 created_at