Spaces:
Running
Running
File size: 809 Bytes
29cbab9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from fastapi import Request, Response
from fastapi_cache import FastAPICache
def user_key_builder(
func,
namespace: str = "",
request: Request = None,
response: Response = None,
*args,
**kwargs,
):
"""
Custom key builder that includes the current user's ID in the cache key.
This prevents caching data leaks across different teams/users.
"""
# Pega o usuário logado que foi injetado pela rota (no caso, via current_user)
user = kwargs.get("current_user")
user_id = user.id if user else "anonymous"
# Cria uma chave única baseada no prefixo, namespace, nome da função, ID do usuário e parâmetros da URL
return f"{FastAPICache.get_prefix()}:{namespace}:{func.__module__}:{func.__name__}:{user_id}:{request.url.query}"
|