2011-07-08 17 views
6

destroy_user_session_pathにリンクしてください。これは最近のバージョンで変更されたようです - 今は:database_authenticatableが私のための破壊ルートを作成します。トークン認証されたユーザーと

トークン認証を使用するユーザーの場合、セッションを終了するための「ログアウト」/「サインアウト」アクションを実装する適切な方法は何ですか?

答えて

5

By defaultトークンを使用してログインすると、Deviseはデータベース認証戦略と同じようにセッションにユーザーを保存します。あなたは工夫の初期化子でtruestateless_tokenを設定することで、これを無効にすることができ

Devise.setup do |config| 
    config.stateless_token = true 
end 

この方法は、トークンはすべての要求で提供されなければなりません。


私が理解しているように、トークン認証はデータベース認証と一緒に使用するように設計されています。モデル番号database_authenticatableの場合、devise_forはセッションルートのみを追加します。これはDeviseの部分についての軽微な見落としのようですが、私の意見では、セッション中にユーザーを離れるアクセストークンは私にとってはあまり意味がありません。

とにかく、Deviseのセッションへのルートを手動で定義してみてください。いずれの場合においても

as :user do # User scope 
    resource :session, :controller => 'devise/sessions' do 
    # new_user_session | GET /users/sign_in => devise/sessions#new 
    get :new, :path => 'sign_in', :as => "new" 

    # user_session | POST /users/sign_in => devise/sessions#create 
    post :create, :path => 'sign_in' 

    # destroy_user_session | GET /users/sign_out => devise/sessions#destroy 
    get :destroy, :path => 'sign_out', :as => "destroy" 
    end 
end 

the documentation for the devise_for helperルートが作成される指定し、彼らがを指す:Devise's routing helpers(未テストコード)から適合

+0

ちょっとマセウス、ポインタありがとう。私は実際には、すべての要求と共にトークンを運ぶのではなく、ユーザーセッションが格納されているのが好きだと思います。私の質問は、ステートレストークン認証を使用しないで、最後にユーザーをログアウトするにはどうすればいいですか? IOW、Deviseが私のために売るセッションを終了するにはどうしたらいいですか? –

+0

どうやってこれらのことを学びましたか?あなたはRDocsを読んだのですか、それともソースのためにまっすぐに行きましたか? –

+1

@Jo、更新された回答。自分のプロジェクトにDeviseを設定する際に、ステートレストークンについて学びました。私はいつも最初にドキュメントを読んでいます。ドキュメンテーションが私が知りたいと思っているものを持っていないときや、物事の仕組みを理解する必要があるときにだけ私はソースのために行く。 (これは、このような質問に答える必要があるときには役に立ちます!:P)内部の仕組みを理解することは有益ですが、必ずしも現実的ではありません(例えばRailsのコードベースは巨大です)。ドキュメンテーション、記事、チュートリアル、あなたが見つけることができるものはすべて、まず。 –

関連する問題