RateLimitLayer class

LAYER 5 — Tracks request frequency per user/IP and blocks excessive requests using a sliding-window counter, backed by a pluggable StorageAdapter.

Defaults to MemoryStorage (single-process, dependency-free). Pass a shared StorageAdapter (e.g. a Redis-backed one) to keep rate-limit state consistent across multiple server instances.

Implemented types

Constructors

RateLimitLayer({int maxRequests = 20, Duration window = const Duration(minutes: 1), StorageAdapter? storage})
Creates a rate-limit layer, defaulting to MemoryStorage unless a shared storage adapter is provided.

Properties

hashCode → int
The hash code for this object.
no setterinherited
maxRequests → int
Maximum number of requests allowed per key within window before subsequent requests are blocked.
final
name → String
A short, stable, human-readable name used in logs and results.
no setteroverride
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
storage → StorageAdapter
Persistent store of per-key hit timestamps. Defaults to MemoryStorage; pass a shared adapter for multi-instance deployments so rate-limit counters aren't reset per instance.
final
window → Duration
The sliding time window over which requests are counted.
final

Methods

check(RequestContext context) → Future<SecurityResult>
Inspects context and returns a SecurityResult.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited