2016-11-21 20 views
0

Rails 4.2を使用し、以下の宝石がインストールされていること。Deviseを使用してユーザーをログアウトできないのはなぜですか?

gem 'turbolinks' 
gem 'jquery-ui-rails' 
gem "devise_ldap_authenticatable" 

私は私が私のログアウトリンクをクリックしたときを除いて、細かい作品を伝えることができるものから、すべてが...

<%= link_to "Logout", destroy_user_session_path, method: :delete, :data => { :no_turbolink => true } %> 

それが適切に生産上のページに戻って看板にユーザーをリダイレクトしますが、私の場合私のルートページに「あなたはすでにサインインしています」という通知メッセージが送り返されます。 destroy_user_session_pathのための私の行動には、次のものが含まれています。私は私の開発環境で同じ手順を行うと

# DELETE /resource/sign_out 
    def destroy 
    cookies.delete(:auth_token) 
    reset_session 
    super 
    end 

すべてが正常に動作しますが、生産上の私は、上記の動作を得ます。私はまた、いくつかの投稿が推奨しているように、:deleteメソッドを:getに変更しました(これは非常に間違っていますが)が、動作しませんでした。私はまた、application.html.erbに次の行があることを確認しました:<%= csrf_meta_tags %> - それがあります。私は私が知っていると私はそれを含めますしてください何かを忘れてしまった場合は、最終的にここに

//= require jquery 
//= require jquery-ui 
//= require jquery_ujs 
//= require jquery.turbolinks 
//= require jquery.tokeninput 
//= require jquery-ui/autocomplete 

// for bootstrap 4 add tether below 
//= require turbolinks 
//= require nprogress 
//= require nprogress-turbolinks 
//= require nested_form_fields 
//= require highcharts 
//= require highcharts/highcharts-more 
//= require highcharts/modules/exporting 
//= require bootstrap-sprockets 
//= require bootstrap-multiselect 
//= require_tree . 

... javascriptの私の(おそらくあまりにも大規模な)のリストが含まれます。ありがとう!

アップデート(アクションを破壊するを追加しました)

# DELETE /resource/sign_out 
    def destroy 
    cookies.delete(:auth_token) 
    reset_session 
    super 
    end 
+1

ただ電話をかけてください...必要がない限りあなたのためにそれを行うようにしましょう。 – Milind

+0

@ミリンド、私はスーパーに電話します、申し訳ありません、私は私の破壊行為を含んでいませんでした。今更新中... – daveomcd

答えて

1

はたぶんないだけauth_tokenセッション全体を削除してみてください。私はdevise_ldap_authenticatorを除いて上記と同じDevise設定を使用しています。私は、アクティブなレコードのセッション・ストアを使用しています私のgemfileで4

# app/controllers/sessions_controller.rb 
class SessionsController < ApplicationController 

    def destroy 
     session.delete(:user_id) 
    end 
end 

次にビューで

# To log out 
<%= link_to "Log Out", destroy_user_session_path, :method => 'delete'%> 

レール:

gem 'activerecord-session_store', github: 'rails/activerecord-session_store' 

そして初期化子

Rails.application.config.session_store :active_record_store 
+0

私はセッションのためにcookie_storeを使用していて、特定のセッションを破棄したり無効にしたりすることができないという説明が間違っていると思います。あなたができることは最高です:cookie_storeは、セッションを満了するためのタイムアウトに設定されています。あなたの答えで説明したように、私はARセッションストアに切り替えました。ありがとう! – daveomcd

関連する問題