python 中使用 itsdangerous 怎么对 token 实现前端2小时没发请求才失效

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer


@api.route('', methods=['POST'])
def get_token():
    token = generate_auth_token(request.id.data)
    t = {
        'token': token.decode('ascii')
    }
    return jsonify(t)


def generate_auth_token():
    s = Serializer(current_app.config['SECRET_KEY'], expiration=7200)
    return s.dumps(id)

目前:
现在我实现的是,token 为2小时有效期

预期:
客户端2小时没有发送请求时才过期,否则每次请求都会对token进行延期

阅读 3.7k
1 个回答

那你没理解token的用法。
首先:①理论上使用token的话,服务器端是不允许保存与token有关的数据的。②理论上同一用户可以有无数多个token,且均有效。③token一旦生成,其过期与否仅由其被生成时设置的过期时间决定。

所以,你使用token是无法达到预期的。

不过你有个思路可以考虑下:①服务端生成一个唯一的字符串如uuid。②将uuid存储至redis,命名为:user:token:10001 = xsir34uf8gu83jowf3f,并设置过期时间为2小时。③每次请求过来,均重置该token在redis中的过期时间。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题