Itsdangerous应用

1.服务端

from flask import Flask, jsonify, request
import itsdangerous
ts = itsdangerous.TimedJSONWebSignatureSerializer("secret", expires_in=3600)

app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username', None)
    password = request.form.get('password', None)
    if password != 'test':
        return jsonify({"msg": "Bad username or password"})

    access_token = ts.dumps({'wang': '123'}).decode()
    refresh_token = ts.dumps({'wang': '123'}).decode()
    ret = {
        "access_token":access_token,
        "refresh_token":refresh_token
    }
    return jsonify(ret)


@app.route('/refresh')
def refresh():
    authorization = request.headers.get('Authorization')
    if authorization and authorization.startswith('Bearer '):
        token = authorization.strip()[7:]
        try:
            payload = ts.loads(token)
        except:
            payload = None
    if payload:
        access_token = ts.dumps({'wang': '123'}).decode()
        ret = {"access_token":access_token}
        return jsonify(ret)
    else:
        return {'message': 'Wrong refresh token.'}

@app.route('/protected', methods=['GET'])
def protected():
    authorization = request.headers.get('Authorization')
    if authorization and authorization.startswith('Bearer '):
        token = authorization.strip()[7:]
        try:
            payload = ts.loads(token)
        except:
            payload = None
    if payload:
        return 'already login'
    else:
        return {'message': 'Wrong refresh token.'}


if __name__ == '__main__':
    app.run(host="0.0.0.0",port=5000,debug=True)

2.客户端

import requests
url = "http://0.0.0.0:5000/login"
payload = {
    "username":"test",
    "password":"test"
}
data = requests.post(url,payload)
data = data.json()

url2 = "http://0.0.0.0:5000/refresh"
header = {
    "Authorization":"Bearer "+data["access_token"]
}
refresh = requests.get(url2,headers=header)


url3 = "http://0.0.0.0:5000/protected"
header = {
    "Authorization":"Bearer "+data["access_token"]
}
protect = requests.get(url3,headers=header)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值