我想以编程方式访问Rails会话秘密(我用它来生成一个登录令牌).
这是我想出的:
ActionController::Base.session.first[:secret]
这将返回会话密钥.但是,每次调用ActionController :: Base.session时,它都会向数组中添加另一个条目,因此最终得到如下内容:
[{:session_key=>"_new_app_session", :secret=>"totally-secret-you-guys"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]
这让我觉得不好.
有更好的方法来访问会话密钥吗?
对于Rails4
Rails.configuration.secret_token Rails.configuration.secret_key_base
对于Rails3
Rails.configuration.secret_token
但是如果对于Rails2.x,就像Don Parish所说的那样
ActionController::Base.session_options[:secret]
谢谢,杰克.
由于秘密不会根据请求或操作而改变,因此这也有效:
ActionController::Base.session_options_for(nil,nil)[:secret]