Class: Philiprehberger::JwtKit::Revocation::MemoryStore
- Inherits:
-
Object
- Object
- Philiprehberger::JwtKit::Revocation::MemoryStore
- Defined in:
- lib/philiprehberger/jwt_kit/revocation.rb
Overview
Thread-safe in-memory revocation store backed by a Hash.
Instance Method Summary collapse
-
#cleanup!(max_age:) ⇒ self
Removes revocation entries older than max_age seconds.
-
#clear ⇒ void
Clears all revoked tokens.
-
#initialize ⇒ MemoryStore
constructor
A new instance of MemoryStore.
-
#revoke(token) ⇒ void
Revokes a token by extracting and storing its JTI.
-
#revoked?(token) ⇒ Boolean
Checks whether a token has been revoked.
-
#size ⇒ Integer
Returns the number of revoked tokens.
Constructor Details
#initialize ⇒ MemoryStore
Returns a new instance of MemoryStore.
23 24 25 26 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 23 def initialize @revoked = {} @mutex = Mutex.new end |
Instance Method Details
#cleanup!(max_age:) ⇒ self
Removes revocation entries older than max_age seconds.
68 69 70 71 72 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 68 def cleanup!(max_age:) cutoff = Time.now.to_i - max_age @mutex.synchronize { @revoked.reject! { |_jti, ts| ts < cutoff } } self end |
#clear ⇒ void
This method returns an undefined value.
Clears all revoked tokens.
53 54 55 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 53 def clear @mutex.synchronize { @revoked.clear } end |
#revoke(token) ⇒ void
This method returns an undefined value.
Revokes a token by extracting and storing its JTI.
32 33 34 35 36 37 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 32 def revoke(token) jti = extract_jti(token) return unless jti @mutex.synchronize { @revoked[jti] = Time.now.to_i } end |
#revoked?(token) ⇒ Boolean
Checks whether a token has been revoked.
43 44 45 46 47 48 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 43 def revoked?(token) jti = extract_jti(token) return false unless jti @mutex.synchronize { @revoked.key?(jti) } end |
#size ⇒ Integer
Returns the number of revoked tokens.
60 61 62 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 60 def size @mutex.synchronize { @revoked.size } end |