generated from dellevin/template
1.登录验证
2.自动打开默认浏览器
This commit is contained in:
@@ -7,9 +7,9 @@ import sys
|
||||
import os
|
||||
import time
|
||||
from datetime import datetime
|
||||
from flask import Flask, render_template, jsonify, g, request
|
||||
from flask import Flask, render_template, jsonify, g, request, session, redirect
|
||||
|
||||
from config import PORT
|
||||
from config import PORT, LOGIN_ENABLED, LOGIN_USERNAME, LOGIN_PASSWORD, SECRET_KEY
|
||||
from blueprints import pin_tu_bp, base64_bp, down_video_bp, fen_ci_bp, content_tag_bp, chmod_calc_bp, json_format_bp, qr_code_bp, http_status_bp, url_parser_bp, token_gen_bp, sovits_tts_bp, stt_bp, ai_dubbing_bp, rvc_bp
|
||||
from utils.stats_db import init_db, record_call, get_total_count, get_avg_duration, get_daily_counts, get_monthly_counts, get_available_years, get_available_months, get_daily_counts_by_month, get_hourly_counts, get_endpoint_stats, get_today_count, get_yesterday_count, get_month_count, get_success_rate, get_duration_distribution, get_slowest_endpoints, get_week_compare, get_recent_calls, get_active_days
|
||||
from utils.stats_db import ALLOWED_TABLES, get_table_info, get_table_rows, get_table_count, insert_row, update_row, delete_rows, clear_table
|
||||
@@ -28,6 +28,24 @@ def create_app():
|
||||
app = Flask(__name__)
|
||||
|
||||
init_db()
|
||||
app.secret_key = SECRET_KEY
|
||||
|
||||
# 登录/登出
|
||||
@app.route('/login', methods=['GET', 'POST'])
|
||||
def login():
|
||||
if not LOGIN_ENABLED:
|
||||
return redirect('/')
|
||||
if request.method == 'POST':
|
||||
if request.form.get('username') == LOGIN_USERNAME and request.form.get('password') == LOGIN_PASSWORD:
|
||||
session['logged_in'] = True
|
||||
return redirect('/')
|
||||
return render_template('login.html', error='用户名或密码错误')
|
||||
return render_template('login.html')
|
||||
|
||||
@app.route('/logout')
|
||||
def logout():
|
||||
session.pop('logged_in', None)
|
||||
return redirect('/login')
|
||||
|
||||
# 主页
|
||||
@app.route('/')
|
||||
@@ -162,6 +180,19 @@ def create_app():
|
||||
deleted = clear_table(table)
|
||||
return jsonify({'success': True, 'deleted': deleted})
|
||||
|
||||
# 登录验证
|
||||
@app.before_request
|
||||
def _check_auth():
|
||||
if not LOGIN_ENABLED:
|
||||
return
|
||||
path = request.path
|
||||
if path == '/login' or path.startswith('/static/'):
|
||||
return
|
||||
if not session.get('logged_in'):
|
||||
if path.startswith('/api/'):
|
||||
return jsonify({'error': '未登录'}), 401
|
||||
return redirect('/login')
|
||||
|
||||
# 请求计时
|
||||
@app.before_request
|
||||
def _start_timer():
|
||||
@@ -203,12 +234,19 @@ app = create_app()
|
||||
|
||||
def start_flask():
|
||||
"""供桌面启动器调用,以非调试模式运行 Flask"""
|
||||
from config import AUTO_OPEN_BROWSER
|
||||
if AUTO_OPEN_BROWSER:
|
||||
import webbrowser
|
||||
import threading as _t
|
||||
_t.Timer(1, webbrowser.open, args=[f'http://127.0.0.1:{PORT}']).start()
|
||||
a = create_app()
|
||||
a.run(host='127.0.0.1', port=PORT, use_reloader=False, threaded=True)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# import webbrowser
|
||||
# import threading as _t
|
||||
# _t.Timer(1, webbrowser.open, args=[f'http://127.0.0.1:{PORT}']).start()
|
||||
from config import AUTO_OPEN_BROWSER
|
||||
if AUTO_OPEN_BROWSER:
|
||||
import webbrowser
|
||||
import threading as _t
|
||||
_t.Timer(1, webbrowser.open, args=[f'http://127.0.0.1:{PORT}']).start()
|
||||
app.run(debug=True, host='0.0.0.0', port=PORT, threaded=True)
|
||||
|
||||
Reference in New Issue
Block a user