9

プログラムで Rails セッション シークレットにアクセスしたいと考えています (サインオン トークンの生成に使用しています)。

これが私が思いついたものです:

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

これにより、セッション シークレットが返されます。ただし、 ActionController::Base.session を呼び出すたびに、別のエントリが配列に追加されるため、次のようになります。

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

これはダメだと思います。

セッションシークレットにアクセスするより良い方法はありますか?

4

5 に答える 5

12

Rails4の場合

Rails.configuration.secret_token
Rails.configuration.secret_key_base

Rails3の場合

Rails.configuration.secret_token

しかし、Rails2.x の場合、Don Parish が述べたように

ActionController::Base.session_options[:secret]
于 2011-02-01T05:27:46.360 に答える
4

ありがとう、ジェイク。

シークレットはリクエストまたはアクションに基づいて変更されないため、これも機能します。

ActionController::Base.session_options_for(nil,nil)[:secret]
于 2008-10-10T17:16:43.587 に答える
2
ActionController::Base.session_options_for(request,params[:action])[:secret]
于 2008-10-10T17:05:08.743 に答える
1

Rails 2.3では、次のものを使用しました。

ActionController::Base.session_options[:secret]
于 2009-02-23T18:28:08.743 に答える
0

Rails 3 の場合、Rails.configuration は Rails.application.config と同じであるため、Rails.configuration.secret_token は choonkeat が提供するものと同じように機能します。

于 2011-02-01T05:47:36.967 に答える