Я пытаюсь заставить Action Cable работать с 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
Если пользователь вошел в систему я все еще получаю nil
от cookies.signed['user.id']
Это хорошо работало для меня кроме того, что мой пользователь не был по умолчанию настройки с завещанию. Для экземпляров, в которых у вас есть другой пользователь, зарегистрированный только, добавьте этот тип пользователя в качестве следующего аргумента, например: 'verfied_user = env ['warden']. User ('admin_user')' – Timbinous
Правильный код выхода: 'Warden :: Manager .before_logout do | пользователь, auth, opts | сфера = выбирает [: сфера] auth.cookies.delete ("# {} Объем .id") auth.cookies.delete ("# {} Объем .expires_at") end' – prograils