Devise + JWT не получает правильного пользователя после выхода из системы от первого пользователя - PullRequest
0 голосов
/ 07 августа 2020

Итак, моя проблема: когда я вхожу в систему с пользователем 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 существует.

Надеюсь, я объясню это правильно. Я искал ответы около недели. Любая помощь будет оценена

1 Ответ

0 голосов
/ 07 августа 2020

Нашел ответ в другом посте - Пришлось переопределить магазин устройств? вместо этого вернуть false Решение здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...