当前位置: 首页 > news >正文

flask的基本使用 token插件(二)

一、安装flask-jwt-extended

安装flask-jwt-extend得时候 会自动安装一个pyjwt得库。pyjwt可以直接使用来生成JWT和验证。但是在flask中,可以通过Flask-JWT-Extended来实现JWT能,因为他封装了使用方式,以及一些属性和装饰器,用起来更加方便

pip install flask-jwt-extended

二、基本使用

1.简介

1.1 create_access_token()

create_access_token 函数用来生成实际的 JWT token

1.2 @jwt_required()

@jew_required 装饰器可以用来保护路由

1.3 get_jwt_identity()

get_jwt_identity()函数用来保护视图里面获取用户的身份信息。

2.初始化项目

创建python包 名称为api.
编辑api内 “init.py” 文件

from flask import  Flask,blueprints
from flask_jwt_extended import JWTManager
from .views.home import blue_home#创建flask 实例的函数
def create_app():app = Flask(__name__)app.config["SECRET_KEY"] = "super-secret"app.register_blueprint(blue_home)return  app# 初始化jwt的函数
def create_jwt(app):jwt = JWTManager()jwt.init_app(app)return jwt

3.创建token

编写main.py

from flask import request,jsonify
from api import create_app,create_jwt
from flask_jwt_extended import create_access_tokenapp = create_app()
jwt = create_jwt(app)@app.route('/login',methods=["POST"])
def index():username = request.form.get("username")password = request.form.get("password")if username == "admin" and password == "admin":# 当用户登陆成功,创建token并返回access_token = create_access_token(identity="admin")return  jsonify(access_token)else:return "用户名或者密码错误!!!"if __name__ == "__main__":app.run(debug=True,host="0.0.0.0")

请求127.0.0.1:5000/login得到访问token

"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcwNzAzNTg5MSwianRpIjoiNGJjNjY4NDctZTQxYy00ZjdmLWIxZWYtOTNjYjJmMTBjYzFmIiwidHlwZSI6ImFjY2VzcyIsInN1YiI6ImFkbWluIiwibmJmIjoxNzA3MDM1ODkxLCJjc3JmIjoiY2VlZGNkZmMtNDIwMS00NmE4LWEzYTItZDRhNTliMDIwYjQ5IiwiZXhwIjoxNzA3MDM2NzkxfQ.SzMKMthP_xQ02QwgFwSu3Refc2oz1EseFgntPzS5U0g"

4.保护视图

创建一个视图函数 views/home.py

from flask import  Blueprint
from flask_jwt_extended import jwt_required,get_jwt_identityblue_home = Blueprint('home',__name__)@blue_home.route('/home')
# 校验token 的函数
@jwt_required()
def home():# 可以获取token中的用户print(get_jwt_identity())return "<h1>home页面<h1>"

当用户不带token访问的时候,会报错

{"msg": "Missing Authorization Header"
}

客户端携带token认证格式

import requests,json
header = {"Authorization": "Bearer eyJhbGciOi.................."
}
res = requests.get("http://127.0.0.1:5000/home",headers=header)

参考连接:https://juejin.cn/post/7234450312726691898#heading-1

http://www.lryc.cn/news/297205.html

相关文章:

  • 云计算、Docker、K8S问题
  • 【Iceberg学习二】Branch和Tag在Iceberg中的应用
  • 在 Blazor WASM 中手撸一个.NET MD5类
  • MFC实现遍历系统进程
  • 【C语言】深入理解指针
  • Excel——有效性、二级菜单联动
  • 计算机网络总结
  • 初识文件包含漏洞
  • AR特效自研AI算法技术解决方案
  • 牛客2024年除夕娱乐赛(题解)
  • 5 scala的函数式编程简介
  • 陪护系统|陪护小程序提升长者护理服务质量的关键
  • C++算法之双指针、BFS和图论
  • 【大厂AI课学习笔记】1.5 AI技术领域(3)自然语言处理
  • 【数字电子技术课程设计】多功能数字电子钟的设计
  • 【新书推荐】7.3 for语句
  • 爬山算法优化遗传算法优化极限学习机的多分类预测,p-ga-elm多分类预测
  • 挑战杯 opencv 图像识别 指纹识别 - python
  • 【Docker】了解Docker Desktop桌面应用程序,TA是如何管理和运行Docker容器(2)
  • PHP、Python、Java 和 Go语言对比
  • 算法题目题单+题解——图论
  • 车载测试中:如何处理 bug
  • 亲测解决vscode的debug用不了、点了没反应
  • 立足智能存取解决方案|HEGERLS智能托盘四向车储存制动能量 实现能源回收
  • 2024.2.8日总结(小程序开发5)
  • Spring Boot配置文件优先级
  • Rust 初体验1
  • 【深度学习】实验7布置,图像超分辨
  • 【八大排序】归并排序 | 计数排序 + 图文详解!!
  • Netty应用(三) 之 NIO开发使用 网络编程 多路复用