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

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_token

app = 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_identity

blue_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.kler.cn/a/228868.html

相关文章:

  • 【脑机接口数据处理】 如何读取Trode 的.rec文件 原始数据?
  • OpenAI函数调用迎来重大升级:引入「最小惊讶原则」等软件工程实践,开发体验更上一层楼!
  • Linux 管道操作
  • 前端性能-HTTP缓存
  • Kubernetes(k8s)和Docker Compose本质区别
  • 计算机网络常见协议
  • ASP.NET Core WebAPI_解决跨域问题(前端后端)
  • docker 简单项目
  • SSH免密切换服务器案例-ssh协议(公钥和私钥)
  • 【C语言】static关键字的使用
  • 【蓝桥杯选拔赛真题63】python小马过河 第十五届青少年组蓝桥杯python 选拔赛比赛真题解析
  • CSS 闪电按钮效果
  • AI新宠Arc浏览器真可以取代Chrome吗?
  • [C语言] 指针详解(1)
  • TCP如何保证传输可靠性?
  • #Z1890. 裁枝剪叶
  • 【Eclipse平台】1Eclipse平台总体概览
  • 那些知名的IT证书 之 AWS篇
  • 【QT+QGIS跨平台编译】之二十四:【GeoTIFF+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • js中this对象的理解(深度解析)
  • 智能优化算法 | Matlab实现合作优化算法(CSA)(内含完整源码)
  • 【如何学习CAN总线测试】——UDS诊断自动化测试(含CAPL源码)
  • 【Elasticsearch】从入门到精通
  • LLM应用开发与落地:使用gradio十分钟搭建聊天UI
  • AI嵌入式K210项目(27)-条形码识别
  • 构建高效直播美颜系统:美颜SDK集成与性能优化指南