Я использую devise-jwt для аутентификации на основе токенов в моем приложении RoR. Клиент отправляет токен в заголовке следующим образом: Bearer #{token}
Используя authenticate_user!
, я могу аутентифицировать пользователя в контроллере и получить зарегистрированного пользователя как current_user
.
Когда я используйте Actioncable, метод connect в connection.rb требует найти пользователя по токену. Файл connection.rb выглядит следующим образом:
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
token = request.env["Authorization"]
find_verified_user
end
private
def find_verified_user
if authenticate_user!
self.current_user = current_user
else
reject_unauthorized_connection
end
end
end
end
Однако authenticate_user!
здесь не является допустимым методом (так как он является указанием устройства c).
Мой вопрос: как мне найти current_user здесь? Как определить клиента, который отправил токен в шапке?