【发布时间】:2015-11-27 16:56:35
【问题描述】:
我注意到 Flask-WTF 生成的令牌会在一小时内过期,并且每个请求都会生成一个不同的令牌。当页面打开超过一小时时,这将导致 SPA 出现问题。页面加载后一小时后发出的 XHR 请求将开始失败,即使用户处于活动状态。
我的解决方法是在每次 API 调用中在浏览器中设置一个新令牌。在服务器中,所有 API 响应都包含一个新生成的令牌:
from flask_wtf.csrf import generate_csrf
def api_response(data, error=None):
response = {"csrftoken": generate_csrf(), "data":data}
...
return make_response(jsonify(response), response_code)
在浏览器中,我们为每个 API 响应设置 csrftoken。
then(function(result) {
if(result.csrftoken) csrftoken=result.csrftoken;
callback(result);
})
这种方法仍然安全快速吗?有没有更好的方法来处理这个?我不太确定直接使用 generate_csrf。
【问题讨论】:
标签: python flask csrf flask-wtforms