Flask 表单不会为无效令牌引发 CSRFError

Flask form does not raise CSRFError for invalid token

Flask-WTF docs状态:

When CSRF validation fails, it will raise a CSRFError.

但我没有遇到异常。

我将 Flask-WTF 用于我的表单,如下所示:

class MyForm(FlaskForm):
    ...

在我的处理程序中,我这样做:

my_form = MyForm()
if my_form.validate_on_submit():
    ...

我希望在 validate_on_submit 内部引发异常,但 validate_on_submit 只是 returns False。

请注意,我不是这样做的:

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

因为我的理解是,如果您的表单依赖于 FlaskForm,则不需要这样做。

我做错了什么?

Searching through the flask-wtf repo for CSRFError,似乎只有在你使用那个

时才会真正引发它
from flask_wtf.csrf import CSRFProtect
csrf = CSRFProtect(app)

你提到的模式。它仅由 _error_responsecsrf.py 中引发,由 protect 函数调用。相反,例如 validate_csrf 在令牌无效时引发 ValidationError