flask_wtf 对 wtforms 进行了封装,增加了 csrf 验证
from flask_wtf import Form
from wtforms import Form
superset登录接口默认使用用前者进行csrf鉴权,
form.validate_on_submit()
如果csrf功能开启,validate会先验证csrf,通过后到验证器。
但可以在config文件中将不需要鉴权的endpoit加入到 WTF_CSRF_EXEMPT_LIST 字段中,表单
WTF_CSRF_EXEMPT_LIST = ["superset.views.core.log"]
查看app.py中有以下方法:
def configure_wtf(self):
if self.config["WTF_CSRF_ENABLED"]:
csrf = CSRFProtect(self.flask_app)
csrf_exempt_list = self.config["WTF_CSRF_EXEMPT_LIST"]
for ex in csrf_exempt_list:
csrf.exempt(ex)
exempt是csrf的装饰器关键词,详细可以在这个链接了解:https://blog.csdn.net/qq_39112101/article/details/98890990
flask_wtf的form.py下有大量csrf相关的实现。
网友评论