Redis¶
Redis is an ultra-fast key-store database. As such, it's a good candidate for token management. In this strategy, a token is generated and associated with the user id. in the database. On each request, we try to retrieve this token from Redis to get the corresponding user id.
Installation¶
You should install the library with the optional dependencies for Redis:
Configuration¶
import redis.asyncio
from fastapi_users.authentication import RedisStrategy
redis = redis.asyncio.from_url("redis://localhost:6379", decode_responses=True)
def get_redis_strategy() -> RedisStrategy:
return RedisStrategy(redis, lifetime_seconds=3600)
As you can see, instantiation is quite simple. It accepts the following arguments:
redis
(redis.asyncio.Redis
): An instance ofredis.asyncio.Redis
. Note that thedecode_responses
flag set toTrue
is necessary.lifetime_seconds
(Optional[int]
): The lifetime of the token in seconds. Defaults toNone
, which means the token doesn't expire.
Why it's inside a function?
To allow strategies to be instantiated dynamically with other dependencies, they have to be provided as a callable to the authentication backend.
Logout¶
On logout, this strategy will delete the token from the Redis store.