写一个简单的FlaskAPI,Token校验下载flask-httpauth包,itsdangerous包后者用于生成临时身份token,校验tokenpipinstallflask-httpauthpipinstallitsdangerousmodel.py文件:(在模型文件中用户类下添加生成token方法)#生成令牌@staticmethoddefgenerate_auth_token(user_id):s=Serializer(Config.SECRET_KEY,expires_in=Config.EXPIRES_IN)returns.dumps({'id':user_id}).decode('ascii')authToken.py文件:(验证令牌文件)fromflaskimportgfromflask_httpauthimportHTTPTokenAuthfromitsdangerousimportSignatureExpired,BadSignature,TimedJSONWebSignatureSerializerasSerializerfromApp.modelsimportUserfromApp.settingsimportConfig#生成HTTPTokenAuth对象authToken=HTTPTokenAuth()#@authToken.verify_token使用重新HttpTokenAuth验证令牌方法@authToken.verify_tokendefverify_authToken(token):g.user=Nones=Serializer(Config.SECRET_KEY)try:data=s.loads(token)exceptSignatureExpired:#正确但过期returnFalseexceptBadSignature:#WrongtokenreturnFalse#上面没有返回错误,然后执行你的token验证逻辑,返回returnTrue到这里,验证token文件已经写入。需要注意的是,后台接收登录请求,验证密码成功后,返回token给前台。当前端在请求中携带token时,在`Authorization`请求头设置中添加Bearer+token的样式。否则,verify_authToken(token)将得不到令牌。下面headers['Authorization']='Bearer'+tokenseepluginHTTPTokenAuth源码可以看到:默认的tokenscheme是:Bearer。def__init__(self,scheme='Bearer',realm=None,header=None):super(HTTPTokenAuth,self).__init__(scheme,realm,header)如果要修改的话,直接authToken.verify_token(scheme="")
