pre / app.py
yangtb24's picture
Upload 37 files
bbb6398 verified
raw
history blame
1.39 kB
"""
API密钥管理系统 - 主应用文件
提供API密钥的添加、编辑、删除和管理功能
"""
from flask import Flask, redirect, url_for, request, jsonify
# 导入配置
from config import SECRET_KEY
# 导入路由蓝图
from routes.web import web_bp
from routes.api import api_bp
# 导入认证模块
from utils.auth import AuthManager
# 创建Flask应用
app = Flask(__name__)
app.secret_key = SECRET_KEY
# 认证中间件 - 验证所有请求
@app.before_request
def authenticate():
"""请求拦截器 - 验证所有需要认证的请求"""
# 登录和静态资源路径不需要验证
if request.path == '/login' or request.path.startswith('/static/'):
return
# 从Cookie中获取令牌
token = request.cookies.get('auth_token')
# 验证令牌
if not AuthManager.verify_token(token):
# 如果是AJAX请求,返回401状态码
if request.headers.get('X-Requested-With') == 'XMLHttpRequest' or request.path.startswith('/api/'):
return jsonify({"success": False, "error": "未授权访问"}), 401
# 否则重定向到登录页面
return redirect(url_for('web.login'))
# 注册蓝图
app.register_blueprint(web_bp)
app.register_blueprint(api_bp)
# 入口点
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=7860)