Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Auth Redis Storage Bundle Laravel Package

keron-digital/auth-redis-storage-bundle

A Symfony bundle that stores authentication data in Redis, enabling fast, scalable session and token persistence across distributed, multi-server applications. Ideal for high-traffic setups needing shared auth state.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The release is a Symfony bundle, not a Laravel package. This is the single most important finding: the artifact provides TokenBlacklistInterface / RedisTokenBlacklist and ActiveTokenStorageInterface / RedisActiveTokenStorage, wired through Symfony's DI container, configuration tree, and a Symfony Flex recipe. None of that infrastructure is usable as-is in a Laravel application. The underlying capability — Redis SETEX-backed token state with automatic TTL cleanup — is framework-agnostic and genuinely useful for any JWT/refresh-token auth design, but a Laravel consumer inherits only the domain contracts and the two Redis implementations, and would need to rebuild the binding layer (service provider, config publishing, client injection) itself.

Integration feasibility. If the consuming application is Laravel, integration is a small but real engineering task, not a composer-require. The domain interfaces are clean and the implementations depend only on a Redis client, so a thin Laravel service provider registering the two classes as singletons and a config/auth_redis.php file is a plausible half-day to one-day effort, contingent on the Redis client type used (e.g. Predis vs. phpredis vs. Laravel's Illuminate\Redis\Connections\Connection). If the package hard-types a specific client interface, an adapter is required and the estimate grows. If the consuming application is Symfony, this is a straightforward drop-in and the Flex recipe handles the boilerplate.

Technical risk. Moderate-low on functionality, moderate on fit. The design is deliberately small and the TTL-based expiry means Redis memory is self-managing — no sweep job, no unbounded growth. Risks worth naming: (1) key-prefix and suffix collisions in shared Redis instances are configurable but not validated, so misconfiguration produces silent cross-tenant data bleed; (2) blacklist and active-token state are two separate keys with two separate TTLs, so correctness depends on callers setting both consistently — there is no atomic "issue + revoke" primitive; (3) SETEX semantics mean a token cannot be tracked beyond its natural expiry, which is intended but forecloses sliding-window or long-lived session use cases; (4) v1.0.0 with no prior release history means no production track record and no upgrade path yet.

Key questions. Is the consuming application Symfony or Laravel? If Laravel, who absorbs the adapter cost? Which Redis client does the bundle require, and is it compatible with Laravel's? Is there a single-command API (e.g. isValid($jti)) that hides the two-store choreography, or must callers orchestrate blacklist and active-token writes themselves? What is the intended failure behavior if Redis is unavailable — fail-open (tokens accepted) or fail-closed (auth down)? Is the package's own test suite framework-coupled such that forking for Laravel loses coverage?

Integration Approach

Stack fit. Clean fit for Symfony 6/7 applications with an existing Redis client service and a JWT or refresh-token flow. Poor fit for Laravel without adaptation. Note explicitly for stakeholders that "Laravel/PHP package" in the intake does not match the artifact — this is a Symfony bundle and should be triaged as such before effort is committed.

Migration path. There is nothing to migrate from; this is a greenfield adoption for a new or existing auth flow. For a Symfony consumer: install, accept the Flex recipe, point configuration at the existing Redis client service, and route token-issue and token-revoke code paths through the two interfaces. For a Laravel consumer: vendor the domain contracts and Redis implementations (or fork), write a service provider and config file, and keep the upstream package as a read-only dependency for the Redis logic.

Compatibility. Verify PHP version floor, Symfony version constraint, and Redis server version against the current estate. Laravel's Redis facade wraps either phpredis or Predis; confirm which client interface the bundle type-hints before assuming an adapter is unnecessary. Also confirm the key-prefix scheme against existing Redis keyspace conventions to avoid collisions with cache, queue, and session data.

Sequencing. (1) Confirm framework and client compatibility before any commitment. (2) If Symfony, run a spike in a non-production environment against a scratch Redis database. (3) Integrate blacklist first — it is the narrower, better-bounded capability and delivers immediate security value on logout/revocation. (4) Add active-token tracking second, since it changes issuance-path semantics and needs coordination with whatever mints tokens. (5) Only then consider the optional user-ID association, which has privacy and key-shape implications.

Operational Impact

Maintenance. Small surface area — two classes, two interfaces, a DI extension, and a Flex recipe — which is favorable. The upstream project carries its own QA (PHPStan, PHP CS Fixer, PHPMD, PCOV coverage, Docker dev environment), suggesting a maintainer who intends to sustain it. Countervailing: v1.0.0 is the first stable release, so bus factor and long-term cadence are unproven. A Laravel fork immediately becomes locally maintained code and inherits the full maintenance burden.

Support. Documentation is described as a quick-start README plus dedicated docs on configuration, usage, testing, and architecture — adequate for a component this size. There is no indication of commercial support, SLAs, or a security disclosure process. For an auth-adjacent component, the absence of a stated vulnerability-handling policy is a gap worth raising, since token invalidation is security-critical infrastructure.

Scaling. Redis SETEX is O(1) per operation and TTL expiry offloads cleanup to Redis, so the design scales horizontally without a coordination layer — provided Redis itself is deployed with adequate memory headroom and eviction policy set correctly. Critical: the eviction policy must not be allkeys-lru on a Redis instance shared with cache data, or token state can be evicted under memory pressure and revoked tokens silently become valid again. Recommend a dedicated Redis logical database or instance for auth state.

Failure modes. Redis unavailable: behavior is caller-determined unless the bundle specifies otherwise — establish fail-open vs. fail-closed before launch, and note that fail-open is a security decision requiring explicit sign-off. Redis eviction or flush: revoked tokens resurrect; mitigate with dedicated keyspace and noeviction or volatile-ttl policy. Clock skew: TTLs are relative durations, so skew mostly affects the caller's computation of remaining lifetime, not the store. Key-prefix misconfiguration: blacklist and active-token state collide with other applications or with each other, producing incorrect validity answers with no error surfaced. Partial write: blacklist set succeeds but active-token set fails (or vice versa) if callers orchestrate manually, leaving inconsistent state.

Ramp-up. Low for a Symfony team already comfortable with DI configuration and Redis — roughly a day to read the docs, wire the services, and cover the two interfaces with tests. Higher for a Laravel team: add the adapter build, plus the ongoing cost of tracking upstream changes in forked code, plus the cognitive load of a second framework's conventions appearing in the codebase. Budget for a written decision record on the framework mismatch either way, since "we adopted a Symfony bundle in a Laravel app" is exactly the kind of thing that surprises a future maintainer.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums