Итак, моя проблема: когда я вхожу в систему с пользователем A (является администратором), он работает нормально, и я могу перечислить список пользователей в базе данных.
Проблема возникает, когда я выхожу из системы и вхожу в систему с помощью пользователь B (обычный пользователь). Я также могу перечислить пользователей, чего не должно происходить (а current_user по-прежнему остается пользователем A). НО, если я удалю httpOnly cook ie, который приложение rails отправляет обратно, а затем запрашиваю список пользователей с токеном из JWT с пользователем B, я получаю 401, что я хочу.
У меня есть инициализатор
module Devise
module Strategies
class JWTAuthenticatable < Base
def authenticate!
token = get_token
return fail(:invalid) unless token.present?
payload = WebToken.decode(token)
return fail(:invalid) if payload == :expire
resource = mapping.to.find(payload['user_id'])
return fail(:not_found_in_database) unless resource
success! resource
end
private
def get_token
auth_header.present? && auth_header.split(' ').last
end
def auth_header
request.headers['Authorization']
end
end
end
end
И мой контроллер приложения -
class ApplicationController < ActionController::Base
protect_from_forgery with: :null_session, prepend: true
before_action :authenticate_user!
end
, который получает только один удар с первого запроса, но никогда не запрашивает после этого, а current_user остается на первом вошедшем в систему пользователе . Но опять же, когда httpOnly cook ie удаляется, модуль получает удар и устанавливает current_user на пользователя B.
Я отправляю JWT с каждым запросом, но забавно то, что когда удаляется после первого запроса, я все равно получаю ответ как если JWT существует.
Надеюсь, я объясню это правильно. Я искал ответы около недели. Любая помощь будет оценена