在HTML表单中使用双提交的CSRF令牌(标题+ cookie)?

时间:2018-03-20 14:56:55

标签: python flask csrf flask-admin flask-jwt-extended

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

0 个答案:

没有答案