阅读Rails会话秘密的最佳方式是什么?
问题描述:
我想以编程方式访问Rails会话密钥(我正在使用它来生成登录令牌)。阅读Rails会话秘密的最佳方式是什么?
这是我想出来的:
ActionController::Base.session.first[:secret]
这将返回会话密钥。但是,每次你打电话的ActionController :: Base.session它增加了一个进入到一个数组,所以你最终的东西是这样的:
[{:session_key=>"_new_app_session", :secret=>"totally-secret-you-guys"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]
这令我是没有好处的。
有没有更好的方法来访问会话密钥?
答
ActionController::Base.session_options_for(request,params[:action])[:secret]
答
谢谢,杰克。
由于秘密不改变基础上,请求或行动,这也适用:
ActionController::Base.session_options_for(nil,nil)[:secret]
答
对于Rails的2.3,我用:
ActionController::Base.session_options[:secret]
答
对于Rails4
Rails.configuration.secret_token
Rails.configuration.secret_key_base
For Rails3
Rails.configuration.secret_token
但如果Rails2.x,像唐教区提到
ActionController::Base.session_options[:secret]
+0
我对这两个都没有。这不正常,是吗?前几天我介绍了一个`config/secrets.yml`文件,可能它没有被读取? – 2015-03-16 12:11:45
答
对于Rails 3中,Rails.configuration是相同的,以Rails.application.config,所以Rails.configuration.secret_token的作用就像choonkeat提供了什么。
很酷,看起来更干净。我们必须在升级时更新我们的代码。 – 2009-02-23 19:05:30