9

Rails 3 でWarden のafter_authenticateコールバック (Devise の下で実行)から現在のセッションにアクセスしようとしています。

アプリケーションコントローラーの上部で、次のようなことをしたい:

Warden::Manager.after_authentication do |user,auth,opts|
  user.associate_with_ids(session[:pending_ids])
end

最終的な目標は、サインアップ前にセッションに保存されたレコード ID のリストを取得し、サインイン後にそれらをユーザー モデルに関連付けることです。

どんな助けでも大歓迎です。

4

4 に答える 4

24

auth.session」は、セッションキー「warden.user。#{scope}.session」のデータを取得/設定します。

Railsアプリ内にpending_idsを保存したと仮定します。

session[:pending_ids] = ...

ワーデンフックにアクセスしたい場合は、次の方法でアクセスできます。

Warden::Manager.after_authentication do |user,auth,opts|
  user.associate_with_ids(auth.env['rack.session'][:pending_ids])
end

それを見つけるのに少し時間がかかったので、誰かの助けになるかもしれないと思います。

(元々はdiegoscataglini.com/2012/02/09/383/manipulating-sessions-in-wardendeviseから取得されましたが、現在は使用されていません)。

于 2012-12-11T00:10:39.193 に答える
2

次の方法でセッション ストアにアクセスできますauth

Warden::Manager.after_authentication do |user,auth,opts|
  user.associate_with_ids(auth.session[:pending_ids])
end
于 2011-11-15T11:28:03.623 に答える
-1

からセッション全体を見つけることもできますauth.raw_session

于 2011-12-30T13:51:59.737 に答える