File size: 1,392 Bytes
bbb6398
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""

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)