免费的建网站软件,网站模板模仿,北京网优化seo公司,大气的外贸公司名字提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Flask-JWT-Extended是什么#xff1f;二、使用步骤1.引入库2.请求验证 总结 前言
提示#xff1a;这里可以添加本文要记录的大概内容#xff1a; 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言一、Flask-JWT-Extended是什么二、使用步骤1.引入库2.请求验证 总结 前言
提示这里可以添加本文要记录的大概内容 提示以下是本篇文章正文内容下面案例可供参考
一、Flask-JWT-Extended是什么
示例flask服务中使用生成token验证,携带token请求接口;设置token过期时间等.
二、使用步骤
1.引入库
pip install flask-jwt-extended
代码如下示例
from flask import Flask, request, jsonify
from flask_jwt_extended import create_access_token, jwt_required, get_jwt_identity,JWTManager,create_refresh_token
from flask import Flask, request, Blueprint
from datetime import timedelta
import json# 安装 token 设置登录token验证
# pip install flask-jwt-extendeduser_blueprint Blueprint(user_blueprint, __name__)user_blueprint.route(/login, methods[POST])
def login():username request.json.get(username, None)password request.json.get(password, None)if username ! admin or password ! admin:return jsonify({msg: Bad username or password,code:401}), 401access_token create_access_token(identityusername)refresh_token create_refresh_token(identityusername)rest {access_token: fBearer {access_token},refresh_token: fBearer {refresh_token},code: 200}# return jsonify(access_tokenaccess_token), 200# return jsonify(rest)return json.dumps(rest, ensure_asciiFalse)user_blueprint.route(/protected, methods[GET])
jwt_required()
def protected():current_user get_jwt_identity()print(current_user)# return jsonify({msg: ok}), 200return jsonify({msg: ok})# 使用刷新JWT来获取普通JWT 前提是已经调用了 /login 接口 携带 refresh_token请求该接口
user_blueprint.route(/refresh, methods[POST])
jwt_required(refreshTrue)
def refresh():identity get_jwt_identity()access_token create_access_token(identityidentity)rest {access_token: fBearer {access_token},code: 200}return jsonify(rest)def create_app():app Flask(__name__)app.secret_key ChangeMe!# app.config[JWT_SECRET_KEY] my_secret_keyapp.config[JWT_BLACKLIST_ENABLED] Trueapp.config[JWT_BLACKLIST_TOKEN_CHECKS] [access]# 设置普通JWT过期时间app.config[JWT_ACCESS_TOKEN_EXPIRES] timedelta(seconds30)# 设置刷新JWT过期时间app.config[JWT_REFRESH_TOKEN_EXPIRES] timedelta(days30)jwt JWTManager(app)jwt.init_app(app)app.register_blueprint(user_blueprint)return appapp create_app()if __name__ __main__:# app.run()app.run(debugTrue, port8888)
2.请求验证
代码如下示例
import requests
import jsonurl http://127.0.0.1:8888/login
data {username: admin,password: admin}headers1 {Content-Type: application/json}
data json.dumps(data)
ret requests.post(urlurl, datadata, headersheaders1)
access_token ret.json()[access_token]
refresh_token ret.json()[refresh_token]
print(access_token)
print(refresh_token)access_token Bearer vvv
refresh_token Bearer xxx# 以下验证token
url2 http://127.0.0.1:8888/protected
token access_token
params {}
headers2 {# Content-Type: application/json,Authorization: token}
ret2 requests.get(urlurl2,headersheaders2,paramsparams)
print(ret2.json())# 以下刷新token# url3 http://127.0.0.1:8888/refresh
# token refresh_token
# headers2 {
# # Content-Type: application/json,
# Authorization: token}
# ret3 requests.post(urlurl3,headersheaders2)
# print(ret3.json()[access_token])
该处使用的url网络请求的数据。 总结
提示这里对文章进行总结