mirror of
https://github.com/fastapi-practices/fastapi_best_architecture.git
synced 2025-08-18 15:00:46 +08:00

* WIP: add rbac authorization * Perform pre-commit fixes * add rbac route whitelist * add init test data user role associations * Restore database table id naming to fix generic crud base * Add database section value uniqueness settings * Update the test directory to tests * Update route_name file name to health_check * Split user auth and user action interfaces * Fix conflict between merge and current branch * Add pymysql dependencies * Fix RBAC authentication method * Add the select serialisation tool * Fix missing return messages due to global exception handler slicing * Update the user interface with associated relationships * Add items to be completed * Perform pre-commit fixes * Add pre-made routers * Paging data return structure optimisation * Split user auth and user interface tests * Fix user register test data structure error * Fix duplicate named test classes
20 lines
628 B
Python
20 lines
628 B
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
from datetime import datetime
|
|
|
|
from fastapi import Request, Response
|
|
from starlette.middleware.base import BaseHTTPMiddleware
|
|
|
|
from backend.app.common.log import log
|
|
|
|
|
|
class AccessMiddleware(BaseHTTPMiddleware):
|
|
"""记录请求日志中间件"""
|
|
|
|
async def dispatch(self, request: Request, call_next) -> Response:
|
|
start_time = datetime.now()
|
|
response = await call_next(request)
|
|
end_time = datetime.now()
|
|
log.info(f'{response.status_code} {request.client.host} {request.method} {request.url} {end_time - start_time}')
|
|
return response
|