Python itsdangerous 生成token和验证token

代码如下

class AuthToken(object):

    # 用于处理token信息流程:
    # 1、更加给定的用户信息生成token
    # 2、保存生成的token,以便于后面验证
    # 3、对用户请求多来的token进行验证:
    #   验证成功--->继续执行后面操作
    #   验证失败--->返回状态码通知client带用户信息来重新生成token

    def __init__(self, token_key):
        self.token_key = token_key

    def generate_token(self, expiration=3600):
        # 生成token需要信息:id,secret,empire/然后对这些信息进行算法加密
        token_obj = Serializer(SECRET_KEY, expires_in=expiration)  #SECRET_KEY为自定义的salt  例如:'asdfasdf'
        token = token_obj.dumps({'token_key': self.token_key})
        return token

    @staticmethod
    def verify_auth_token(token):
        # 验证token
        token_obj = Serializer(SECRET_KEY)
        try:
            token_obj.loads(token)   #如果token验证不成功,会报两种错误
        except SignatureExpired:     #时间过期
            msg = 'valid token, but expired'
            return msg
        except BadSignature:         #token错误
            msg = 'Invalid token'
            return msg
        return True

    def save_token_key(self):
        # 仅需要保存self.token_key就可以,通过token_key进行实例化.将其保存在redis。这里进行redis连接和保存
        redis_obj = RedisConnect()
        redis_obj.client.hset('token', 'api_name', self.token_key)

 

posted @ 2018-09-06 18:57  他山之石·玉  阅读(1481)  评论(0编辑  收藏  举报