Rails 3如何获得新的会话ID

时间:2014-11-07 17:01:00

标签: ruby-on-rails-3 ruby-on-rails-3.2 rack

背景 - 我在登录新用户之前执行reset_session但我还想将特定数据绑定到用户的会话,以便我使用以下方式识别每个会话session_id。我想在成功登录后执行此操作与某种before_filter检查每个请求但执行reset_session之后无法创建新的session_id

在同一个请求中执行reset_session后,是否有人知道如何使用session_id生成新会话?

> session.class
=> Rack::Session::Abstract::SessionHash
> session[:session_id]
=> "01aa3b8e7c7c26ab82b7a57e2b0f749b"
> reset_session
=> nil
> session.class
=> Hash
> session[:session_id]
=> nil

我看到一篇帖子说这是错误但它已经3岁了,除了提出另一个请求之外,它没有提及任何获得新会话ID的方法。

> tmp = session.dup
=> {"session_id"=>"01aa3b8e7c7c26ab82b7a57e2b0f749b", ...}
> reset_session
=> nil
> session.replace(tmp)
=> {"session_id"=>"01aa3b8e7c7c26ab82b7a57e2b0f749b", ...}
> session[:session_id]
=> nil

其他一些人还提到重复会话并替换会话,但这不会创建新的session_id

0 个答案:

没有答案