mirror of
https://github.com/fastapi-practices/fastapi-best-architecture.git
synced 2026-09-21 21:15:13 +00:00
Refactor the interface rate limiter implementation (#1072)
* Refactor the interface rate limiter implementation * Update deps
This commit is contained in:
@@ -2,7 +2,7 @@ from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Depends, Request, Response
|
||||
from fastapi.security import HTTPBasicCredentials
|
||||
from fastapi_limiter.depends import RateLimiter
|
||||
from pyrate_limiter import Duration, Rate
|
||||
from starlette.background import BackgroundTasks
|
||||
|
||||
from backend.app.admin.schema.token import GetLoginToken, GetNewToken, GetSwaggerToken
|
||||
@@ -11,6 +11,7 @@ from backend.app.admin.service.auth_service import auth_service
|
||||
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
|
||||
from backend.common.security.jwt import DependsJwtAuth
|
||||
from backend.database.db import CurrentSession, CurrentSessionTransaction
|
||||
from backend.utils.limiter import RateLimiter
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -27,7 +28,7 @@ async def login_swagger(
|
||||
'/login',
|
||||
summary='用户登录',
|
||||
description='json 格式登录, 仅支持在第三方api工具调试, 例如: postman',
|
||||
dependencies=[Depends(RateLimiter(times=5, minutes=1))],
|
||||
dependencies=[Depends(RateLimiter(Rate(5, Duration.MINUTE)))],
|
||||
)
|
||||
async def login(
|
||||
db: CurrentSessionTransaction,
|
||||
|
||||
@@ -2,7 +2,7 @@ import uuid
|
||||
|
||||
from fast_captcha import img_captcha
|
||||
from fastapi import APIRouter, Depends
|
||||
from fastapi_limiter.depends import RateLimiter
|
||||
from pyrate_limiter import Duration, Rate
|
||||
from starlette.concurrency import run_in_threadpool
|
||||
|
||||
from backend.app.admin.schema.captcha import GetCaptchaDetail
|
||||
@@ -11,6 +11,7 @@ from backend.core.conf import settings
|
||||
from backend.database.db import CurrentSession
|
||||
from backend.database.redis import redis_client
|
||||
from backend.utils.dynamic_config import load_login_config
|
||||
from backend.utils.limiter import RateLimiter
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -18,7 +19,7 @@ router = APIRouter()
|
||||
@router.get(
|
||||
'/captcha',
|
||||
summary='获取登录验证码',
|
||||
dependencies=[Depends(RateLimiter(times=5, seconds=10))],
|
||||
dependencies=[Depends(RateLimiter(Rate(5, Duration.SECOND * 30)))],
|
||||
)
|
||||
async def get_captcha(db: CurrentSession) -> ResponseSchemaModel[GetCaptchaDetail]:
|
||||
await load_login_config(db)
|
||||
|
||||
Reference in New Issue
Block a user