【问题标题】:Flask Secuirty Disable Password confirmationFlask Security 禁用密码确认
【发布时间】:2020-04-24 19:49:27
【问题描述】:
您好,我正在使用 python flask Flask-Security。
我想让用户确认他们的电子邮件而不是他们的密码。
它不要求用户输入他们的密码并且另一个输入来确认密码匹配。
相反,它只是要求用户输入一个密码。
SECURITY_CONFIRMABLE 要求用户在注册新帐户时确认其电子邮件地址。
我希望用户在注册时确认他们的电子邮件,但不检查密码是否匹配。
【问题讨论】:
标签:
python
flask
flask-security
【解决方案1】:
来自Flask-Security 的RegisterForm 继承自ConfirmRegisterForm、PasswordConfirmFormMixin 和NextFormMixin。您应该从Flask-Security 导入ConfirmRegisterForm 和NextFormMixin 并定义一个自定义RegisterForm,它只继承自ConfirmRegisterForm 和NextFormMixin。
from flask-security import ConfirmRegisterForm, NextFormMixin
class CustomRegisterForm(ConfirmRegisterForm, NextFormMixin):
def __init__(self, *args, **kwargs):
super(CustomRegisterForm, self).__init__(*args, **kwargs)
if not self.next.data:
self.next.data = request.args.get('next', '')
重写Flask-Security的配置:
app["SECURITY_REGISTER_FORM"] = CustomRegisterForm
【解决方案2】:
如果您使用SECURITY_CONFIRMABLE = True 并想在注册时使用密码确认,只需添加到配置文件或应用程序配置:
from flask_security import RegisterForm
SECURITY_CONFIRM_REGISTER_FORM = RegisterForm
# or use this: app["SECURITY_CONFIRM_REGISTER_FORM"] = RegisterForm
这适用于Flask-Security==3.0.0