修复验证码问题
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')
|
VIDEO_FOLDER = os.path.join(UPLOAD_FOLDER, 'video')
|
||||||
os.makedirs(VIDEO_FOLDER, exist_ok=True)
|
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'}
|
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):
|
def migrate_settings(settings):
|
||||||
"""迁移旧版设置到新版格式"""
|
"""迁移旧版设置到新版格式"""
|
||||||
if 'admin_password' in settings:
|
if 'admin_password' in settings:
|
||||||
# 如果存在旧版明文密码,转换为哈希
|
# 如果存在旧版明文密码,转换为哈希(使用pbkdf2:sha256方法)
|
||||||
settings['admin_password_hash'] = generate_password_hash(settings['admin_password'])
|
settings['admin_password_hash'] = generate_password_hash(
|
||||||
|
settings['admin_password'],
|
||||||
|
method='pbkdf2:sha256'
|
||||||
|
)
|
||||||
del settings['admin_password']
|
del settings['admin_password']
|
||||||
elif 'admin_password_hash' not in settings:
|
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
|
return settings
|
||||||
|
|
||||||
|
|
||||||
@ -235,11 +243,22 @@ def login():
|
|||||||
|
|
||||||
settings = load_settings()
|
settings = load_settings()
|
||||||
if username == 'admin' and 'admin_password_hash' in settings:
|
if username == 'admin' and 'admin_password_hash' in settings:
|
||||||
if check_password_hash(settings['admin_password_hash'], password):
|
try:
|
||||||
session['username'] = username
|
if check_password_hash(settings['admin_password_hash'], password):
|
||||||
next_url = request.args.get('next', url_for('index'))
|
session['username'] = username
|
||||||
flash('登录成功', 'success')
|
next_url = request.args.get('next', url_for('index'))
|
||||||
return redirect(next_url)
|
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')
|
flash('用户名或密码错误', 'danger')
|
||||||
return render_template('login.html')
|
return render_template('login.html')
|
||||||
@ -261,11 +280,16 @@ def captcha():
|
|||||||
image = Image.new('RGB', (120, 40), color=(255, 255, 255))
|
image = Image.new('RGB', (120, 40), color=(255, 255, 255))
|
||||||
draw = ImageDraw.Draw(image)
|
draw = ImageDraw.Draw(image)
|
||||||
|
|
||||||
# 使用默认字体或指定字体路径
|
# 使用指定字体路径
|
||||||
try:
|
try:
|
||||||
font = ImageFont.truetype("arial.ttf", 24)
|
font = ImageFont.truetype(FONT_PATH, 24)
|
||||||
except:
|
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))
|
draw.text((10, 5), captcha_text, font=font, fill=(0, 0, 0))
|
||||||
@ -831,4 +855,4 @@ def api_categories():
|
|||||||
return jsonify(sorted_categories)
|
return jsonify(sorted_categories)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
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",
|
"card_style": "compact",
|
||||||
"search_history": [],
|
"search_history": [],
|
||||||
"theme": "light",
|
"theme": "dark",
|
||||||
"bg_image": "/upload/background/5dd4f5d3cd7b48eca9967fa063ea5cd9.png",
|
"bg_image": "/upload/background/5dd4f5d3cd7b48eca9967fa063ea5cd9.png",
|
||||||
"dark_bg_image": "/static/background_dark.jpg",
|
"dark_bg_image": "/static/background_dark.jpg",
|
||||||
"site_title": "应用导航",
|
"site_title": "应用导航",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user