Flask 表单不会为无效令牌引发 CSRFError
Flask form does not raise CSRFError for invalid token
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_response
在 csrf.py 中引发,由 protect
函数调用。相反,例如 validate_csrf
在令牌无效时引发 ValidationError
。
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_response
在 csrf.py 中引发,由 protect
函数调用。相反,例如 validate_csrf
在令牌无效时引发 ValidationError
。