使用 WTForms-Alchemy 进行 CSRF 保护

Using CSRF protection with WTForms-Alchemy

我有一个包含 3 个表单的 Web 应用程序。 2 继承自 flask_wtf.form.Form,后者本身继承自 WTForms SecureForm。这意味着这些表单具有自动 CSRF 保护。

第三种形式从模型对象继承其属性,因此继承自 wtforms_alchemy.ModelForm,后者本身继承自 wtforms.Form。

如何为最后一个表单添加 CSRF 保护?

对我有用的是从 flask_wtf 包中混合 Form。

from flask_wtf import Form

class YourForm(ModelForm, Form):

结果中还有一个有效的隐藏 CSRF 令牌。

对我有用的是在 flask_wtf 包的配置 flask_wtf.csrf 中混合。

py

from flask_wtf.csrf import CSRFProtect
....
csrf = CSRFProtect(app)

class UserForm(ModelForm):
    class Meta:
       model = User
....

userform = UserForm()

html

<form method="post">
  {{ userform.csrf_token }}
  {{ userform.userform }}
  <input type="submit" name="submit">   
</form>

结果中还有一个有效的隐藏 CSRF 令牌。