代碼如下
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)