我正在使用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身份验证吗?