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.
9 10 11 12 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 9 def initialize @revoked = {} @mutex = Mutex.new end |
Instance Method Details
#cleanup!(max_age:) ⇒ self
Removes revocation entries older than max_age seconds.
54 55 56 57 58 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 54 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.
39 40 41 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 39 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.
18 19 20 21 22 23 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 18 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.
29 30 31 32 33 34 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 29 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.
46 47 48 |
# File 'lib/philiprehberger/jwt_kit/revocation.rb', line 46 def size @mutex.synchronize { @revoked.size } end |