0

我正在为我的 ror api 使用 devise 和 devise-jwt。如果发送的用户不记名令牌被撤销,我想知道用户(通过 api 调用)。

我做了这条路线:

  def user_token_revoked
    decoder = JWT::Decode.new(
      request.headers['Authorization'].split(' ')[1],
      'GENERATED_TOKEN',
      nil,
      nil
    )
    decoded = decoder.decode_segments
    user = User.find_by_id(decoded[0]['sub']) # get id user from decoded token
    render json: user.jwt_revoked?(decoded), status: :ok
  end

但它给我带来了这个错误:#<NoMethodError: undefined method `jwt_revoked?' 对于#用户:0x0000558992eb9b98>

我在我的模型中使用这个 jwt_revocation_strategy: JwtBlacklist:

class JwtBlacklist < ApplicationRecord
  include Devise::JWT::RevocationStrategies::Denylist
  self.table_name = 'jwt_blacklists'
end

如何调用 jwt_revoked?功能 ??

谢谢

4

1 回答 1

1

jwt_revoked?Devise::JWT::RevocationStrategies::Denylist模块的一部分。所以你需要调用JwtBlacklist模型

JwtBlacklist.jwt_revoked?(decoded, user)
于 2021-02-17T15:04:09.187 回答