我正在使用flask-jwt-extended
JWT 身份验证的组合,并且我启用了 CSRF 保护,这意味着对于某些 HTTP 方法(PUT、POST、DELETE...),需要 cookie 中的值和 HTTP 标头匹配。
这适用于我的 API 请求,我只是在 JS 中构造 HTTP 请求并正确设置了标头,但我想使用 Flask-Admin,并允许基于 JWT 令牌进行访问。我通过is_accessible
在 Flask-Admin 的 ModelView 中装饰函数@jwt_optional
并在其中检查来做到这一点。
但是,现在当我尝试通过 Flask-Admin 执行任何修改时,我从 收到一条错误消息flask-jwt-extended
,指出我没有正确包含我的 CSRF 令牌。这是真的,因为我使用的是 Flask-Admin 附带的默认表单。
我的问题是,最好的解决方案是什么?是否可以仅对某些路径禁用 CSRF 保护?(并为他们启用 Flask-Admin 自己的 CSRF 保护?)我是否应该修改视图并插入由提交按钮触发但实际上提交 XmlHTTPRequest 的 JS?我应该以不同的方式为 Flask-Admin 视图实现 JWT 身份验证吗?