阅读Rails会话密钥的最佳方法是什么?

时间:2008-10-10 16:29:17

标签: ruby-on-rails ruby session

我想以编程方式访问Rails会话密码(我使用它来生成登录令牌)。

以下是我的想法:

ActionController::Base.session.first[:secret]

返回会话密钥。但是,每次调用ActionController :: Base.session时,它都会向数组添加另一个条目,因此最终会得到如下内容:

[{:session_key=>"_new_app_session", :secret=>"totally-secret-you-guys"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]

这让我觉得不好。

有更好的方法来访问会话密钥吗?

5 个答案:

答案 0 :(得分:11)

对于Rails 4

Rails.configuration.secret_token
Rails.configuration.secret_key_base

对于Rails 3

Rails.configuration.secret_token

但是如果对于Rails2.x,就像Don Parish提到的那样

ActionController::Base.session_options[:secret]

答案 1 :(得分:5)

谢谢,杰克。

由于秘密不会根据请求或操作而改变,因此也可以:

ActionController::Base.session_options_for(nil,nil)[:secret]

答案 2 :(得分:3)

ActionController::Base.session_options_for(request,params[:action])[:secret]

答案 3 :(得分:1)

对于Rails 2.3,我使用过:

ActionController::Base.session_options[:secret]

答案 4 :(得分:0)

对于Rails 3,Rails.configuration与Rails.application.config相同,因此Rails.configuration.secret_token就像choonkeat提供的一样。