在Flask安全表单中覆盖并验证现有字段

时间:2016-10-21 03:13:51

标签: python flask flask-security

我试图将使用Flask-Security构建的Flask应用程序中的注册限制为来自特定域的电子邮件地址。

我的另一个倾向是覆盖Flask Security的register_user视图,但他们的文档似乎扩展了表单是首选路径。

在下面的代码中,我尝试向email添加一个自定义验证器,这个字段已经在Flask Security' RegisterForm中声明。永远不会调用附加验证功能。我已经尝试在类之外声明变量并在EmailField内调用它,但这似乎没有帮助。

这都在app.py内。

class RestrictedRegisterForm(RegisterForm):
    email = EmailField(
        'Email', validators=[DataRequired()]
    )

    def validate_email(form, field):
        domain_list = ['foo.com', 'bar.org']
        email_domain = field.data.split("@")[1]
        if email_domain not in domain_list:
            raise ValidationError('Email address must be of an authorized domain')

user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore, register_form=RestrictedRegisterForm)

0 个答案:

没有答案