【问题标题】:Using CSRF protection with WTForms-Alchemy通过 WTForms-Alchemy 使用 CSRF 保护
【发布时间】:2016-02-05 14:05:57
【问题描述】:
我有一个包含 3 个表单的 Web 应用程序。 2 继承自flask_wtf.form.Form,它本身继承自WTForms SecureForm。这意味着这些表单具有自动 CSRF 保护。
第三种形式从模型对象继承其属性,因此从 wtforms_alchemy.ModelForm 继承自 wtforms.Form。
如何在最后一个表单中添加 CSRF 保护?
【问题讨论】:
标签:
python
flask
flask-sqlalchemy
flask-wtforms
【解决方案1】:
对我有用的是从 flask_wtf 包中混合 Form。
from flask_wtf import Form
class YourForm(ModelForm, Form):
结果也有一个有效的隐藏 CSRF 令牌。
【解决方案2】:
对我有用的是从 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 令牌。