如何在没有 wtforms 的情况下将 csrf 添加到烧瓶应用程序?

How to add csrf to flask app without wtforms?

我有一个简单的网络应用程序, 我想添加 csrf 保护。但是我没看懂 Flask-WTF 提供的 csrf wrapper。我已经看过文档了。但是还是没搞明白是怎么回事

我的问题是:

(1) 应用包装后,需要从路由上处理吗?还是烧瓶帮我处理好?

(2)如果不是自己怎么处理? (请举个例子)。

注意:我不想使用 wtf 表单,我想为输入使用自定义标签。

app.py :

from flask import Flask, render_template
from flask_wtf.csrf import CSRFProtect

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
csrf = CSRFProtect(app)

@app.route('/', methods=['GET'])
def get_home():
    """Get home template"""
    return render_template('home.html')

@app.route('/', methods=['POST'])
def post_home():
    """Handle posted data and do stuff"""
    return

home.html(表格):

<form action="#" method="post">
    <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
    <input type="text" placeholder="Name">
    <button type="submit">
        Submit
    </button>
</form>

默认情况下,您无需担心自己对其进行验证 - 您只需照常处理 POST 请求的其他字段即可。如果您在此处查看 CSRFProtect class 的 init_app 函数中的函数 csrf_protect()(第 202-225 行,https://github.com/lepture/flask-wtf/blob/master/flask_wtf/csrf.py),您可以查看这些内容这将在给定请求之前停止 protect() 函数 运行。