2011-02-01 13 views
14

私はDevise for rails 3アプリケーションを使用しています。ページキャッシングのために、私はログイン/アウト情報のためのクッキーを設定する必要があります。Deviseでログイン/ログアウトするときにCookieを設定する方法

Deviseでログイン/ログアウトするときにCookieを設定する最も簡単な方法は何ですか?私は「コントローラーをカスタマイズする方法」を読んでいますが、それは多くの作業のようです。

答えて

12

実際にあなたがこれに似たコントローラを作成することができ、中にログにクッキーを追加し、ログアウトする工夫のSessionsControllerを拡張するためにあまりにもハードではないでしょう。

# app/controllers/sessions_controller.rb 
class SessionsController < Devise::SessionsController 
    # POST /resource/sign_in 
    def create 
    cookies[:sign_in] = "Sign in info you want to store" 
    super 
    end 

    # GET /resource/sign_out 
    def destroy 
    cookies[:sign_out] = "Sign out info you want to store" 
    super 
    end 
end 

次にあなたが追加する必要がありますあなたのルートに従ってください。

devise_for :users, :controllers => { :sessions => "sessions" } 

これであなたはほとんどの方法が得られます。

+0

を削除するかどう

これ

は、私に設定されているオプションを覚えていれば、電子メールを覚えてクッキーを追加します。できます!ありがとう。 –

+0

このソリューションをhttp://stackoverflow.com/questions/4301249/how-to-change-the-default-path-of-view-files-in-a-rails-3-controllerで使用すると、オリジナルを使用できます再生回数 –

+0

iframeにCookieが設定されていません。ログインすると、 'Ecwid'組み込みアプリケーションのログインページにリダイレクトされます。 – kpp

18

工夫がウォーデンに基づいているため、別の解決策は、あなたのdevise.rbで例えば、ウォーデンのコールバックを使用することです:

このソリューションは、新たな初期化子を作成答えるかに追加するカールrosaen @から適応
Warden::Manager.after_set_user do |user,auth,opts| 
    auth.cookies[:signed_in] = 1 
    end 

    Warden::Manager.before_logout do |user,auth,opts| 
    auth.cookies.delete :signed_in 
    end 
+0

signed_inコントロールのクッキーを設定するうまい方法です。私はSessionsControllerを受け取りましたが、これもうまくいきましたが、ユーザーが「パスワードを忘れた」方法でパスワードをリセットした直後にCookieを設定していませんでした。 Wardenコールバックを使用して期待どおりに動作しました! –

+0

これははるかに効果的です。オムニバスでのログインやユーザーがパスワードを更新して再度サインインする必要がある場合などの状況を処理します。 – ScotterC

+4

@karlrosaen〜 'auth.cookies'はサポートされなくなりました – Roland

3

あなたのdevise.rbイニシャライザの終わり。ではない、それは私がセッション/ new.html.hamlをコピーしていたクッキー

Warden::Manager.after_authentication do |user, auth, opts| 
    if user.remember_me 
    auth.cookies[:email] = {value: user.email, expires: 2.weeks.from_now} 
    else 
    auth.cookies.delete :email 
    end 
end 
関連する問題