Ich versuche Action Cable mit Devise zu bekommen.Rails Devise Action Cable
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
self.current_user = find_verified_user
logger.add_tags 'ActionCable', current_user.name
end
protected
def find_verified_user
verified_user = User.find_by(id: cookies.signed['user.id'])
if verified_user && cookies.signed['user.expires_at'] > Time.now
verified_user
else
reject_unauthorized_connection
end
end
end
end
Wenn ein Benutzer angemeldet ist ich noch nil
von cookies.signed['user.id']
Das funktionierte gut für mich, außer dass mein Benutzer war nicht der Standard Sie mit devise einrichten. Für Fälle, in denen ein anderer Benutzer angemeldet ist, fügen Sie einfach diesen Benutzertyp als nächstes Argument hinzu, wie zum Beispiel 'verfied_user = env ['warden']. User ('admin_user')' – Timbinous
Der richtige Logout-Code: 'Warden :: Manager .before_logout do | user, auth, opts | scope = setzt [: scope] auth.cookies.delete ("# {Umfang} .id") auth.cookies.delete ("# {Umfang} .expires_at") end' – prograils