# encoding:utf-8
"""
实现token的验证
"""
from flask import Flask, views, request
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
app = Flask( __name__ )
app.config["SECRET_KEY"] = "123456"
class Token( views.MethodView ): # 采用CVB模式
methods = ["POST", "GET"]
def get(self ): # 验证token
token = request.headers.get("z-token", None) # 获取请求头中的token
s = Serializer( app.config["SECRET_KEY"] ) # 用户解析token的对象
if token:
try:
data = s.loads( token ) # 反序列化。出现异常则过期
except Exception as e:
return "token过期 "
return data["id"] # post第三行
return " 不存在token"
def post(self): # 创建token
s = Serializer( app.config["SECRET_KEY"] , expires_in=60 ) # 密钥,过期时间/second
uid = request.values.to_dict().get("uid", "123456" )
return s.dumps({"id": uid }).decode("ascii") # 序列化,编码
app.add_url_rule("/", view_func=Token.as_view( name="token") ) # CBV模式
if __name__ == "__main__":
app.run( debug=True )