2016-12-16 1 views
0

Ich habe redis-rb zu meiner Rails 5-Anwendung hinzugefügt, um Backend-Prozesse zu verwalten, die von sidekiq verwaltet werden.Schienen mit Redis und Devise funktioniert nicht

Benutzer Auth in meiner App wird von Devise verwaltet.

Nachdem alle meine Arbeiter usw. korrekt funktionieren, scheint es, dass mein Sitzungsspeicher jetzt defekt ist. Das Problem ist, dass wenn ich mich abmelde, die Benutzersitzung nicht mehr zerstört wird, so dass es unmöglich ist, sich abzumelden.

Hier ist mein session_store.rb config:

if Rails.env.production? 
    Rails.application.config.session_store :cookie_store, key: '_myapp_session', domain: ENV['SESSION_STORE_DOMAIN'], tld_length: ENV['TLD_LENGTH'].to_i 
else 
    Rails.application.config.session_store :cookie_store, key: '_myapp_session', domain: :all, tld_length: 2 
end 

Ich habe auch versucht mit dem redis-session-store Juwel zu experimentieren, nachdem diesen Fehler zu begegnen, aber dies führt zu einem InvalidAuthenticityToken Fehler.

Ich möchte nicht wirklich meinen Sitzungsspeicher ändern, um redis zu verwenden. Gibt es einen Weg dies zu lösen oder fehlt mir etwas?

UPDATE 1

sessions_controller.rb (devise)

def destroy 
    signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)) 
    set_flash_message! :notice, :signed_out if signed_out 
    yield if block_given? 
    respond_to_on_destroy 
end 
+0

Können Sie den Code für Ihre Zeichen einfügen aus Aktionen ? – whodini9

+0

Ich habe es @ whodini9 getan. Das ist einfach nur Code. Ich habe an dieser Aktion nichts geändert. – Herm

+0

Können Sie in dieser Aktion versuchen, session.delete (: user_id) hinzuzufügen? – whodini9

Antwort

1

In Ihrem sessions_controller.rb hinzufügen session.delete(:user_id) zum destroy Methode

def destroy 
    #... 
    session.delete(:user_id) 
end