Spaces:
Paused
Paused
| #!/usr/bin/env python3 | |
| # -*- coding: utf-8 -*- | |
| """ | |
| 认证模块 - 提供API访问认证功能 | |
| """ | |
| import os | |
| import logging | |
| import functools | |
| from flask import request, jsonify | |
| logger = logging.getLogger(__name__) | |
| # 从环境变量获取API密钥 | |
| API_KEY = os.environ.get("API_KEY", "changeme") | |
| def authenticate(func): | |
| """ | |
| 用于API路由的认证装饰器 | |
| Args: | |
| func: 被装饰的视图函数 | |
| Returns: | |
| 函数: 包含认证逻辑的包装函数 | |
| """ | |
| def wrapper(*args, **kwargs): | |
| # 获取请求头中的API Key | |
| api_key = request.headers.get("X-API-Key") | |
| # 验证API Key | |
| if not api_key or api_key != API_KEY: | |
| logger.warning(f"API认证失败:{'未提供API Key' if not api_key else 'API Key无效'}") | |
| return jsonify({ | |
| "success": False, | |
| "error": "未提供API Key或API Key无效" | |
| }), 401 | |
| # 认证通过,调用原始视图函数 | |
| return func(*args, **kwargs) | |
| return wrapper |