【问题标题】: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 令牌。

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多