after_request:
- 如果没有抛出错误,在每次请求后执行
- 接受一个参数:视图函数作出的响应
- 在此函数中可以对响应值在返回之前做最后一步修改处理
- 需要将参数中的响应在此参数中进行返回
# 在这里增加请求勾子(请求勾子的作用:访问任何一个请求都会增加),在请求之后设置cookie(对返回值做进一步处理,增加随机值)
# 我们无法判断用户第一次访问网站时,是哪一个页面,不能写死给某个网页
# 需要对所有的请求都进行监听
# csrf_token 会被缓存起来,多次调用,只会返回相同的token(没有被强制删除或没有过期)
# 如果需要获取,可以使用session['csrf_token']:说明token会被扩展设置到session中(同步:cookie和redis里面的session都有)
@app.after_request
def after_request(response):
token = generate_csrf()
response.set_cookie('csrf_token', token)
return response
如上,如需要访问一个接口都需要做同样的操作(比如上面不管访问哪个页面,都需要设置csrf_token用于验证),就要用到请求勾子