修复了 UserPassword 不存在的问题,修复了明文密码的问题

This commit is contained in:
2026-06-18 19:02:31 +08:00
parent 5ac9c785f9
commit d769dec2ec
4 changed files with 61 additions and 15 deletions

View File

@@ -256,15 +256,21 @@ class User(QModel):
self.UserPassword = hashed.decode('utf-8')
def CheckPassword(self, RawPassword):
"""验证密码"""
"""验证密码——兼容 bcrypt 哈希和明文存储"""
import bcrypt
try:
return bcrypt.checkpw(
RawPassword.encode('utf-8'),
self.UserPassword.encode('utf-8')
)
except Exception:
return False
stored = self.UserPassword or ''
# bcrypt 哈希以 $2b$ 或 $2a$ 开头,长度固定 60
if stored.startswith(('$2b$', '$2a$')) and len(stored) == 60:
try:
return bcrypt.checkpw(
RawPassword.encode('utf-8'),
stored.encode('utf-8')
)
except Exception:
return False
else:
# 明文密码(旧数据兼容)
return stored == RawPassword
def GetTele(self):
"""获取电话,空则返回默认文本"""