本篇目的
python+flask+requests简单实现登陆票据token生成
1、打开pycharm添加项目FlaskRestFulApi
新建两个py文件:app.py 和 request.py
2、修改app.py文件
添加必要的代码:
from flask import Flask app = Flask(__name__) @app.route('/', methods=['get']) def hello_flask(): return 'hello flask!' if __name__ == '__main__': app.run()
右键运行项目并访问: http://127.0.0.1:5000/
信息返回正确。
3、开始修改app.py中代码:
3.1、添加测试数据所需用户信息数据:
#测试用户信息 user = {'phone':'18888888888', 'pwd':'123456', 'token':'', 'age':18, } 3.2、添加生成token的方法: #生成token(传入) def get_token(phone): #根据用户手机、随机数、时间2小时过期 生成token token = base64.b64encode((":".join([str(phone), str(random.random()), str(time.time()+7200)])).encode()).decode() user['token']=token #生成token后赋值给用户 print("生成的token:", user['token']) return token 3.3、添加验证token的方法: #验证token def verify_token(token): if token!=user['token']: #token无效 return -1 _token = base64.b64decode(token) _token = _token.decode() timestr = _token.split(":")[2]#过期时间 if float(timestr) > time.time():#判断传入的token中时间时候大于当前时间,是则在有效期内 #token已过期 return 1 else: #token已过期 return 0
3.4、添加请求获取token的方法:
#通过账号密码获取token @app.route('/login', methods=['POST', 'GET']) def login(): if request.method == 'POST': phone = request.form['phone']#获取手机号参数 pwd = request.form['pwd'] # 获取手机号参数 #验证用户账号密码是否正确 if user['phone']!=phone or user['pwd']!=pwd: return '账号或密码错误' #生成token并返回 token = get_token(phone) user['token']=token return token return '请求无效'
3.5、添加通过token获取用户年龄的方法:
#通过token获取用户年龄 @app.route('/getusermsg', methods=['POST']) def getusermsg(): token = request.form['token'] print(user['token']) print(verify_token(token)) if verify_token(token)!=1: return 'token无效或已过期' else: return '你的年龄为:%s'%str(user['age'])
3.6、添加入口代码:
if __name__ == '__main__': app.run()
4、开始修改request.py中代码:(本文件用于模拟用户的请求)
import requests #测试请求模拟登陆(生成token) r = requests.post('http://127.0.0.1:5000/login', {'phone':'18888888888','pwd':'123456'}) print(r.text) #通过token获取用户信息(年龄) r2 = requests.post('http://127.0.0.1:5000/getusermsg', {'token':r.text}) print(r2.text)
5、测试
5.1、先在app.py运行项目:
5.2、在request.py运行项目进行测试: