导航

token实例

Posted on 2021-05-06 09:27  old_dog~  阅读(439)  评论(0)    收藏  举报
# 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  )