我想以编程方式访问Rails会话密码(我使用它来生成登录令牌)。
以下是我的想法:
ActionController::Base.session.first[:secret]
返回会话密钥。但是,每次调用ActionController :: Base.session时,它都会向数组添加另一个条目,因此最终会得到如下内容:
[{:session_key=>"_new_app_session", :secret=>"totally-secret-you-guys"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]
这让我觉得不好。
有更好的方法来访问会话密钥吗?
答案 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提供的一样。