python+flask+requests简单实现登陆票据token生成

 

本篇目的

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运行项目进行测试:

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值