起初我使用了 Rachel 的答案,但由于错误仍然附加到表单字段,最终用户可以判断他们是否有有效的电子邮件和不正确的密码......所以,当我使用 Flash 消息进行几乎所有反馈时,我发现编辑 flask_security 本身对我来说是最简单的方法。
如果你打开文件
站点包\flask_security\forms.py
你会发现以下代码:
if self.user is None:
self.email.errors.append(get_message('USER_DOES_NOT_EXIST')[0])
return False
if not self.user.password:
self.password.errors.append(get_message('PASSWORD_NOT_SET')[0])
return False
if not verify_and_update_password(self.password.data, self.user):
self.password.errors.append(get_message('INVALID_PASSWORD')[0])
return False
if requires_confirmation(self.user):
self.email.errors.append(get_message('CONFIRMATION_REQUIRED')[0])
return False
if not self.user.is_active:
self.email.errors.append(get_message('DISABLED_ACCOUNT')[0])
return False
您可以看到它在相关字段(电子邮件或密码)中附加了一个错误,您可以将它们注释掉以简单地提供有关失败的反馈 - 我个人闪现如下错误:
if self.user is None:
#self.email.errors.append(get_message('USER_DOES_NOT_EXIST')[0])
flash('Error: There was an issue logging you in')
return False
if not self.user.password:
#self.password.errors.append(get_message('PASSWORD_NOT_SET')[0])
flash('Error: There was an issue logging you in')
return False
if not verify_and_update_password(self.password.data, self.user):
#self.password.errors.append(get_message('INVALID_PASSWORD')[0])
flash('Error: There was an issue logging you in')
return False
if requires_confirmation(self.user):
#self.email.errors.append(get_message('CONFIRMATION_REQUIRED')[0])
flash('Error: You have not confirmed your email')
return False
if not self.user.is_active:
#self.email.errors.append(get_message('DISABLED_ACCOUNT')[0])
flash('Error: There was an issue logging you in')
return False
我不确定是否有比直接编辑包更好的方法来实现我所做的更改(我确信这是不好的做法),但它对我有用,我理解。