修复验证码问题
This commit is contained in:
parent
4672041a41
commit
6f626398f7
48
app.py
48
app.py
@ -29,6 +29,8 @@ os.makedirs(BACKGROUND_FOLDER, exist_ok=True)
|
||||
VIDEO_FOLDER = os.path.join(UPLOAD_FOLDER, 'video')
|
||||
os.makedirs(VIDEO_FOLDER, exist_ok=True)
|
||||
|
||||
FONT_PATH = os.path.join(BASE_DIR, 'static', 'webfonts', 'arial.ttf')
|
||||
|
||||
# 允许的文件扩展名
|
||||
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'ico', 'svg', 'mp4'}
|
||||
|
||||
@ -41,12 +43,18 @@ SETTINGS_FILE = os.path.join(DATA_DIR, 'settings.json')
|
||||
def migrate_settings(settings):
|
||||
"""迁移旧版设置到新版格式"""
|
||||
if 'admin_password' in settings:
|
||||
# 如果存在旧版明文密码,转换为哈希
|
||||
settings['admin_password_hash'] = generate_password_hash(settings['admin_password'])
|
||||
# 如果存在旧版明文密码,转换为哈希(使用pbkdf2:sha256方法)
|
||||
settings['admin_password_hash'] = generate_password_hash(
|
||||
settings['admin_password'],
|
||||
method='pbkdf2:sha256'
|
||||
)
|
||||
del settings['admin_password']
|
||||
elif 'admin_password_hash' not in settings:
|
||||
# 如果既没有旧版密码也没有哈希,生成默认密码哈希
|
||||
settings['admin_password_hash'] = generate_password_hash('123456')
|
||||
settings['admin_password_hash'] = generate_password_hash(
|
||||
'123456',
|
||||
method='pbkdf2:sha256'
|
||||
)
|
||||
return settings
|
||||
|
||||
|
||||
@ -235,11 +243,22 @@ def login():
|
||||
|
||||
settings = load_settings()
|
||||
if username == 'admin' and 'admin_password_hash' in settings:
|
||||
if check_password_hash(settings['admin_password_hash'], password):
|
||||
session['username'] = username
|
||||
next_url = request.args.get('next', url_for('index'))
|
||||
flash('登录成功', 'success')
|
||||
return redirect(next_url)
|
||||
try:
|
||||
if check_password_hash(settings['admin_password_hash'], password):
|
||||
session['username'] = username
|
||||
next_url = request.args.get('next', url_for('index'))
|
||||
flash('登录成功', 'success')
|
||||
return redirect(next_url)
|
||||
except ValueError as e:
|
||||
print(f"密码验证错误: {e}")
|
||||
# 如果哈希验证失败,尝试重置密码
|
||||
settings['admin_password_hash'] = generate_password_hash(
|
||||
'123456',
|
||||
method='pbkdf2:sha256'
|
||||
)
|
||||
save_settings(settings)
|
||||
flash('系统检测到密码配置问题,已重置为默认密码123456,请重新登录', 'warning')
|
||||
return redirect(url_for('login'))
|
||||
|
||||
flash('用户名或密码错误', 'danger')
|
||||
return render_template('login.html')
|
||||
@ -261,11 +280,16 @@ def captcha():
|
||||
image = Image.new('RGB', (120, 40), color=(255, 255, 255))
|
||||
draw = ImageDraw.Draw(image)
|
||||
|
||||
# 使用默认字体或指定字体路径
|
||||
# 使用指定字体路径
|
||||
try:
|
||||
font = ImageFont.truetype("arial.ttf", 24)
|
||||
font = ImageFont.truetype(FONT_PATH, 24)
|
||||
except:
|
||||
font = ImageFont.load_default()
|
||||
try:
|
||||
# 如果指定字体不存在,尝试系统默认字体
|
||||
font = ImageFont.truetype("arial.ttf", 24)
|
||||
except:
|
||||
# 最后使用默认字体
|
||||
font = ImageFont.load_default()
|
||||
|
||||
# 绘制验证码文本
|
||||
draw.text((10, 5), captcha_text, font=font, fill=(0, 0, 0))
|
||||
@ -831,4 +855,4 @@ def api_categories():
|
||||
return jsonify(sorted_categories)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
||||
app.run(debug=True, port='8094', host='0.0.0.0')
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"card_style": "compact",
|
||||
"search_history": [],
|
||||
"theme": "light",
|
||||
"theme": "dark",
|
||||
"bg_image": "/upload/background/5dd4f5d3cd7b48eca9967fa063ea5cd9.png",
|
||||
"dark_bg_image": "/static/background_dark.jpg",
|
||||
"site_title": "应用导航",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user