从第一个用户注销后,设计 + JWT 未获得正确的用户

Devise + JWT Not getting Correct User, after logging out from first user

所以我的问题是:当我使用用户 A(是管理员)登录时,它工作正常,我可以在数据库中列出用户列表。

当我注销并使用用户 B(普通用户)登录时出现问题,我也可以列出不应该发生的用户(并且 current_user 仍然是用户 A)。但是,如果我删除 rails 应用程序发回的 httpOnly cookie,然后使用用户 B 从 JWT 请求带有令牌的用户列表,我得到 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 cookie 时,模块被命中并将 current_user 设置为用户 B.

我在每次请求时都会发送 JWT,但有趣的是,在第一个请求后删除时,我仍然会收到回复,就好像 JWT 存在一样。

希望我解释正确 我一直在寻找答案大约一个星期了。任何帮助将不胜感激

在另一个 post 中找到了答案- 是否必须覆盖设计商店?改为 return false Solution Here