Flask中基于Token的身份认证
Flask提供了多种身份认证方式,其中基于Token的身份认证是其中一种常用方式。基于Token的身份认证通常是在用户登录之后,为用户生成一个Token,然后在每次请求时用户将该Token作为请求头部中的一个参数进行传递,服务器端在接收到请求后验证该Token是否有效。
下面是基于Token的身份认证的具体实现步骤:
-
在用户登录成功之后,为该用户生成一个Token,通常使用jwt库进行生成。
-
将该Token返回给客户端,客户端需要将该Token存储起来,例如可以将该Token保存在浏览器的Cookie中,或者使用本地存储。
-
当客户端发送请求时,需要将该Token作为请求头部中的一个参数进行传递,例如可以将该Token放在Authorization字段中,例如
Authorization: Bearer <Token>。 -
服务器端在接收到请求时,从请求头部中获取该Token,并验证该Token是否有效。验证方法通常是使用jwt库进行验证,例如验证Token的有效期、签名等等。
-
如果Token验证成功,则认为该请求是合法的,可以继续处理;如果Token验证失败,则返回401 Unauthorized状态码。
下面是一个基于Token的身份认证的示例代码:
from flask import Flask, request, jsonify
from flask_jwt_extended import create_access_token, jwt_required, JWTManager, get_jwt_identityapp = Flask(__name__)app.config['JWT_SECRET_KEY'] = 'super-secret'
jwt = JWTManager(app)users = {'john': 'password','susan': 'strongpassword'
}@app.route('/login', methods=['POST'])
def login():username = request.json.get('username', None)password = request.json.get('password', None)if not username or not password:return jsonify({"msg": "缺少用户名或密码"}), 400if username not in users:return jsonify({"msg": "未找到用户"}), 404if users[username] != password:return jsonify({"msg": "用户名或密码错误"}), 401access_token = create_access_token(identity=username)return jsonify(access_token=access_token), 200@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():current_user = get_jwt_identity()return jsonify(logged_in_as=current_user), 200
这个例子中,/login 接口用来验证用户的用户名和密码,并生成一个 Token,/protected接口用了 @jwt_required()装饰器,表示只有在请求头中包含 Token 的请求才会通过身份验证。create_access_token 用来生成 Token,get_jwt_identity 用来获取当前用户的用户名。
客户端请求示例:
1.登录,获取 Token:
curl -X POST \http://localhost:5000/login \-H 'Content-Type: application/json' \-d '{"username": "john","password": "password"
}'
- 发送包含 Token 的请求:
curl -X GET http://localhost:5000/protected -H 'Authorization: Bearer <token>'
其中<token>是登录时获取到的Token。
- 📢博客主页:https://blog.csdn.net/qq233325332
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 陌北V1 原创,首发于 CSDN博客🙉
- 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
相关文章:
Flask中基于Token的身份认证
Flask提供了多种身份认证方式,其中基于Token的身份认证是其中一种常用方式。基于Token的身份认证通常是在用户登录之后,为用户生成一个Token,然后在每次请求时用户将该Token作为请求头部中的一个参数进行传递,服务器端在接收到请求…...
波奇学数据结构:时间复杂度和空间复杂度
数据结构:计算机存储,组织数据方式。数据之间存在多种特定关系。时间复杂度:程序基本操作(循环等)执行的次数大O渐进法表示法用最高阶的项来表示,且常数变为1。F(n)3*n^22n1//F(n)为…...
移动OA办公系统为企业带来便捷办公
移动OA系统是指企业员工同手机等移动设备来使用OA办公系统,在外出差的员工只需要通过OA系统的手机APP就可以接收相关的新信息。PC办公与移动OA办公的相结合,构建用户单位随时随地办公的一体化环境。 相比PC办公,移动OA办公给企业带来更多的便…...
什么是Type-c口?Type-c口有什么优势?
什么是Type-C接口 Type-C接口有哪些好处坏处 说起“Type-C”,相信大家都不会陌生,因为最近拿它大做文章的厂商着实不少,但要具体说清楚Type-C是什么,估计不少人只能说出“可以正反插”“USB的一种”之类的大概。其实,T…...
Go开发者常犯的错误,及使用技巧 (1)
代码规范 命名不规范 变量名要有意义,不能随便取a,b,c 如果只是纯粹的算法题,这样问题不大。但工程上的代码可读性要求较高,不能随意命名变量名,例如: for _, v : range userList {// ... }如果for语句块简短还好&…...
Servlet 作业
一、填空题1. Servlet 中使用Session 对象的步骤为:调用HttpServletRequest.getSession()的得到Session对象,查看Session对象,在会话中保存数据。2. http 全称是_HyperText Transfer Protocol3. 用户可以有多种方式请求Servlet,如…...
Hive高阶函数:explode函数、Lateral View侧视图、聚合函数、增强聚合
Hive高阶函数 文章目录Hive高阶函数explode函数Lateral View侧视图原理语法聚合函数增强聚合grouping setsCUBEROLL UPexplode函数 explode接收map、array类型的数据作为输入,然后把输入数据中的每个元素拆开变成一行数据,一个元素一行。explode执行效果…...
信息系统服务管理
一、信息系统服务业及发展二、信息系统工程监理的概念及发展三、信息系统运行维护的概念和发展 IT服务管理(ITSM) 四、信息技术服务管理的标准和框架 IT服务标准体系(ITSS) 一、信息系统服务业及发展 总结:前景很好 二、信息系…...
Windows10 安装ElasticStack8.6.1
一、安装ElasticSearch8.6.1 1.官网下载ElasticSearch8.6.1压缩包后解压 2.安装为服务 elasticsearch-service.bat install 3.运行 elasticsearch-service.bat start 4.通过浏览器访问 http://localhost:9200/ 提示需要登录,但不知密码是啥。 5.重置密码 ela…...
gRPC 非官方教程
一、 简介 gRPC的定义: 一个高性能、通用的开源RPC框架主要面向移动应用开发: gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。基于HTTP/2协议标准而设计,基于ProtoBuf(Protoc…...
6.2【人工智能与深度学习】RNN、GRU、远程服务管理、注意力、Seq2 搜索引擎和内存网络
【人工智能与深度学习】RNN、GRU、远程服务管理、注意力、Seq2 搜索引擎和内存网络底层原理介绍 深度学习架构循环神经网络(RNN)循环网络:摊开循环的网络的循环循环神经网络的技巧乘法模组注意模组门控循环单元(GRU)长期短期记忆(Long Short-Term Memory,简称LSTM)序列到序列…...
软件工程复习
软件工程简介 软件: -在执行时提供所需的功能和性能的指令; -使程序能够充分操作信息的数据结构; -描述这些程序的操作和使用情况的文档。 软件定义:计算机程序和相关文档。 软件特点:软件没有质量;它并不…...
将Nginx 核心知识点扒了个底朝天(二)
Nginx 是如何实现高并发的? 如果一个 server 采用一个进程(或者线程)负责一个request的方式,那么进程数就是并发数。那么显而易见的,就是会有很多进程在等待中。等什么?最多的应该是等待网络传输。 而 Nginx 的异步非阻塞工作方…...
【PowerQuery】PowerBI 的PowerQuery支持的数据集成
PowerBI中的各个Power组件已经被深度集成到PowerBI中,不再作为像Excel一样的独立组件而存在。在PowerBI的界面中为了快速导入这些常用的数据,也有相应的快速导入界面。PowerBI的快速导入界面位于主页面中,下图就是PowerBI的快速导入界面。 在PowerBI中的数据导入界面相比Exc…...
scipy spatial transform Rotation库的源代码
前几日研究scipy的旋转,不知道具体里面怎么实现的,因此搜索一番。 发现Rotation在scipy的表达是用四元数的 https://github.com/jgagneastro/coffeegrindsize/edit/master/App/dist/coffeegrindsize.app/Contents/Resources/lib/python3.7/scipy/spatia…...
JAVA文件操作
JAVA文件操作 文章目录JAVA文件操作1.属性2.构造方法3.方法3.1创建文件3.2 文件删除3.3创建目录3.4文件名3.5 文件重命名3.6查看文件的可读性 Java中通过 java.io.file类来对文件(目录)进行抽象的描述。注意, 有File对象时,不代表真实存在该文件。1.属…...
字符串匹配 - 模式预处理:BM 算法 (Boyer-Moore)
各种文本编辑器的"查找"功能(CtrlF),大多采用Boyer-Moore算法,效率非常高。算法简介在 1977 年,Robert S. Boyer (Stanford Research Institute) 和 J Strother Moore (Xerox Palo Alto Research Center) 共…...
RV1126笔记三十:freetype显示矢量字体
若该文为原创文章,转载请注明原文出处。 在前面介绍了使用取模软件,可以自定义OSD,这种做法相对不灵活,也无法变更,适用大部分场景。 如果使用opencv需要移植opencv,芯片资源相对要相比好,而且移植比freetype复杂。 这里记录下如何使用freetype显示矢量字体,使用fre…...
polkit pkexec 本地提权漏洞修复方案
polkit pkexec 本地提权漏洞 漏洞细节,polkit pkexec 中对命令行参数处理有误,导致参数注入,能够导致本地提权。 解决建议 1、无法升级软件修复包的,可使用以下命令删除pkexec的SUID-bit权限来规避漏洞风险: chmod 0…...
es-06聚合查询
聚合查询 概念 聚合(aggs)不同于普通查询,是目前学到的第二种大的查询分类,第一种即“query”,因此在代码中的第一层嵌套由“query”变为了“aggs”。用于进行聚合的字段必须是exact value,分词字段不可进行…...
自适应混沌粒子群优化算法在PID参数整定中的应用:高效控制策略的代码详解与模型分享
自适应混沌粒子群整定PID/ACPSO-PID/PID参数整定 ACPSO(自适应混沌粒子群优化)整定PID(比例-积分-微分控制器)是一种高效的控制参数优化方法。 它利用粒子群优化(PSO)的基本框架,同时融入混沌理…...
STM32上如何用串口BREAK中断优雅处理DMX与RDM协议(附完整代码)
STM32串口BREAK中断实现DMX/RDM协议双模通信实战指南 舞台灯光控制系统对实时性和可靠性有着近乎苛刻的要求。作为行业标准的DMX512协议及其扩展协议RDM,承载着数以万计舞台灯具的控制指令。传统基于STM32的软件轮询检测方案常面临响应延迟、误触发等问题࿰…...
零基础入门:时空预测的系统化学习笔记
零基础入门:时空预测的系统化学习笔记 很多刚接触时序与时空预测领域的朋友,常常会陷入两个极端:要么一上来就硬啃复杂的 SOTA 模型,连基础算子都没搞懂就想复现顶会成果,最后处处碰壁;要么只停留在基础概…...
YOLOv5实战:如何自定义COCO指标计算APtiny(附完整代码修改指南)
YOLOv5实战:深度解析COCO评估指标自定义与APtiny计算优化 在目标检测领域,COCO数据集的评估标准已成为衡量模型性能的黄金准则。但当我们面对特定场景——尤其是小目标检测任务时,标准的3232像素"small"类别划分往往难以满足精细化…...
大模型赋能多尺度空间智能:从具身感知到地球系统建模的跨学科探索
1. 大模型如何重构空间智能的认知框架 当AlphaGo击败人类棋手时,我们惊叹于AI的策略能力;但当大语言模型开始理解三维空间关系时,这标志着机器认知的质变。空间智能的本质是理解物体间的相对位置、距离和运动规律,这种能力对人类而…...
老王-十条江湖铁律:比读百本厚黑书更管用
十条江湖铁律 ——比读百本厚黑书更管用“人若不想被算计, 就必须记住这10条—— 不是教你变坏, 而是—— 让你在复杂世界里,活得清醒且安全。”🏙️ 1. 小地方发达,速换圈子“庙小妖风大,池浅王八多。”小…...
Keil5实战:手把手教你制作自定义FLM插件(附完整驱动配置)
Keil5实战:手把手教你制作自定义FLM插件(附完整驱动配置) 在嵌入式开发领域,Flash编程算法(FLM)是连接开发环境与目标芯片闪存的重要桥梁。当我们需要支持非标准闪存芯片或特殊外设接口时,自定义…...
【Godot】【整活】用 50 行代码做一个“抖音同款解压小游戏”(附源码)
最近短视频平台上经常能看到一种“解压小游戏”: 点一下 → 爆炸特效 💥 滑一下 → 连锁反应 🎯 满屏粒子 → 爽感拉满 😎 这些游戏的核心特点只有三个字: 👉 简单、直接、上头 今天我们就用 Godot 4,只用 约 50 行代码,实现一个“点击爆炸”的解压小游戏。 精…...
LiuJuan20260223Zimage v1.0作品集:当传统工笔画遇见AI生成
LiuJuan20260223Zimage v1.0作品集:当传统工笔画遇见AI生成 1. 引言:一次跨越时空的艺术对话 想象一下,你拍了一张现代都市的夜景,或者设计了一张充满未来感的数字海报,然后,你把它交给一位深谙宋元笔法的…...
5G赋能下的车联网协同感知:自动驾驶感知盲区消除新思路
1. 为什么自动驾驶需要"组队开黑"模式? 想象一下你开车经过一个十字路口,左侧突然冲出一辆外卖电动车——这是典型的A柱盲区问题。传统自动驾驶就像闭着眼睛打游戏,全靠本车传感器"听声辨位"。而5G车联网协同感知&#x…...
