我试图将使用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)