Próbuję podłączyć Action Cable do Devise.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
Jeśli użytkownik jest zalogowany w I jeszcze dostać nil
z cookies.signed['user.id']
Ten pracował dobrze dla mnie chyba, że mój użytkownik nie był domyślnym ustawieniu z devise. W przypadku instancji, w których zalogowany jest inny użytkownik, należy dodać ten typ użytkownika jako następny argument, tak jak w przypadku 'verfied_user = env ['warden']. User ('admin_user')' – Timbinous
Właściwy kod wylogowania: 'Warden :: Manager .before_logout do | user, auth, optts | scope = opts [: scope] auth.cookies.delete ("# {scope} .id") auth.cookies.delete ("# {scope} .expires_at") end' – prograils