fix(auth): VerifyPassword 形参遮蔽 Password 模型导致 AttributeError
- AdminUserManager.VerifyPassword 的形参名为 Password,遮蔽了模块级导入的 Password 模型 - 导致 Password.objects 变成对 str 取属性:AttributeError: 'str' object has no attribute 'objects' - 影响面:/API/Ehrm/UnlockIdCard、/API/SiteUserManagement/VerifyPassword、2FA 设置/禁用(均走 AuthManager.VerifyUserPassword) - 修法:形参改名 PlainPassword,模型 Password 恢复可见
This commit is contained in:
1 parent
298cfe59d0
commit
9fd38f3c8e
1 file changed
+5
-2
+5
-2
@@ -2541,9 +2541,12 @@ class AdminUserManager:
|
|||||||
return True, '密码重置成功'
|
return True, '密码重置成功'
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def VerifyPassword(UserUUID, Password):
|
def VerifyPassword(UserUUID, PlainPassword):
|
||||||
"""校验用户密码(独立 Password 表)
|
"""校验用户密码(独立 Password 表)
|
||||||
|
|
||||||
|
注意:形参**不能**叫 `Password` —— 会遮蔽模块级导入的 `Password` 模型
|
||||||
|
(`Password.objects` 会变成对 str 取属性,抛 AttributeError)。
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
(用户记录存在?, 密码是否匹配)
|
(用户记录存在?, 密码是否匹配)
|
||||||
"""
|
"""
|
||||||
@@ -2551,7 +2554,7 @@ class AdminUserManager:
|
|||||||
if pw_obj is None:
|
if pw_obj is None:
|
||||||
return False, False
|
return False, False
|
||||||
try:
|
try:
|
||||||
return True, VerifyPassword(Password, pw_obj.Password)
|
return True, VerifyPassword(PlainPassword, pw_obj.Password)
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
return True, False
|
return True, False
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user