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

flask服务鉴权

基本认证(Basic Authentication):

这是一种简单的鉴权方式,需要客户端发送用户名和密码,服务器验证后允许或拒绝访问。可以使用 Flask-BasicAuth 扩展来实现。首先,安装扩展:

pip install Flask-BasicAuth
from flask import Flask
from flask_basicauth import BasicAuthapp = Flask(__name__)
app.config['BASIC_AUTH_USERNAME'] = 'admin'
app.config['BASIC_AUTH_PASSWORD'] = '123456'
app.config['BASIC_AUTH_FORCE'] = False  # 为True 就默认对所有 api 进行认证, 如果设置为 False, 那么可以通过 @basic_auth.required 对指定 api 进行认证。
basic_auth = BasicAuth(app)@app.route('/')
@basic_auth.required
def hello_world():return 'Hello World!'

此时访问鉴权的接口地址会要求输入用户名密码:
在这里插入图片描述
使用代码请求样例:

import requestsurl = "http://192.168.3.199:7130"payload={}
headers = {'User-Agent': 'Apifox/1.0.0 (https://apifox.com)','Authorization': 'Basic YWRtaW46MTIzNDU2'
}response = requests.request("GET", url, headers=headers, data=payload)print(response.text)

密文处实际为base64加密:

auth = str(base64.b64encode(f'{self.username}:{self.password}'.encode('utf-8')), 'utf-8')
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0', "Content-Type": "application/json", 'Authorization': f'Basic {auth}'
}

Token 鉴权(todo)

客户端在请求中携带一个令牌(token),服务器验证该令牌是否有效。这种方式通常用于API鉴权。可以使用 Flask-JWT-Extended 或 Flask-RESTful 等扩展来实现。
通过 Token 鉴权是一种常见的方式,用于保护 Web 应用或 API 的安全性。在 Flask 中,你可以使用第三方扩展如 Flask-JWT-Extended 来实现 Token 鉴权。以下是一个基本的示例:

首先,安装 Flask-JWT-Extended 扩展:

pip install Flask-JWT-Extended
from flask import Flask, request
from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identityapp = Flask(__name__)# 设置密钥,用于加密 Token
app.config['JWT_SECRET_KEY'] = 'your_secret_key'# 初始化 JWTManager
jwt = JWTManager(app)# 路由用于用户登录并生成 Token
@app.route('/login', methods=['POST'])
def login():username = request.json.get('username')password = request.json.get('password')# 这里应该根据用户名和密码验证用户# 如果验证成功,创建并返回一个 Tokenif username == 'user' and password == 'password':access_token = create_access_token(identity=username)return {'access_token': access_token}else:return {'message': 'Invalid credentials'}, 401# 受保护的路由,需要 Token 鉴权
@app.route('/protected', methods=['GET'])
@jwt_required()
def protected_route():current_user = get_jwt_identity()return f'Hello, {current_user}! This route is protected by JWT.'if __name__ == '__main__':app.run()

我们使用 Flask-JWT-Extended 来处理 Token 鉴权。
在 /login 路由中,用户提供用户名和密码进行验证。如果验证成功,将创建并返回一个包含用户身份信息的 Token。
在 /protected 路由中,我们使用了 @jwt_required() 装饰器,它要求请求中必须包含有效的 Token 才能访问。
你需要将上述示例中的用户名和密码验证部分替换为你实际的用户验证逻辑。请确保在生产环境中使用 HTTPS 来保护通信安全,并考虑其他安全性措施,如 Token 过期时间、刷新 Token 等。

自定义装饰器(todo)

你可以编写自己的装饰器函数来实现鉴权逻辑。例如,下面是一个简单的自定义装饰器示例:

from flask import Flask, request, jsonify
from functools import wrapsapp = Flask(__name__)# 用户认证函数,根据用户名和密码验证用户
def authenticate(username, password):# 实际应用中,这里应该根据用户名和密码进行验证if username == 'user' and password == 'password':return Truereturn False# 自定义装饰器函数,用于鉴权
def auth_required(f):@wraps(f)def decorated_function(*args, **kwargs):auth = request.authorizationif not auth or not authenticate(auth.username, auth.password):return jsonify({'message': 'Authentication required'}), 401return f(*args, **kwargs)return decorated_function@app.route('/')
@auth_required
def protected_route():return 'This route is protected by custom authentication.'if __name__ == '__main__':app.run()

相关文章:

flask服务鉴权

基本认证(Basic Authentication): 这是一种简单的鉴权方式,需要客户端发送用户名和密码,服务器验证后允许或拒绝访问。可以使用 Flask-BasicAuth 扩展来实现。首先,安装扩展: pip install Fla…...

【2023华为杯B题】DFT类矩阵的整数分解逼近(思路及代码下载)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

基于微信小程序的校园生活管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境学生微信端的主要功能有:管理员的主要功能有:具体实现截图视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝1…...

SQL server 创建存储过程

SQL Server如何创建存储过程 存储过程: 可以理解为完成特定功能的一组 SQL 语句集,存储在数据库中,经过第一次编译,之后的运行不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数…...

一文了解亚马逊云科技适用于 Amazon Lightsail 的托管数据库

Amazon Lightsail 是亚马逊云科技提供的一种易上手使用、月度价格经济实惠,并包括了计算实例、容器、存储、数据库的虚拟专用服务器。在创建时可以进行业务蓝图选择,可选择包含多种操作系统(Linux/Windows 等)或操作系统加上典型应…...

【antd Col】奇怪的TypeError: Cannot read properties of undefined (reading ‘then‘)

现象 修改antd的Col组件的layouts属性为span后,并通过监听resize事件对span列宽进行动态变化时,报错TypeError: Cannot read properties of undefined (reading ‘then‘)。 补充示例一 由于我使用了飞冰ice.js,且在以下过程中写了如下语句…...

requests处理 multipart/form-data 请求以及 boundary值问题

requests处理 multipart/form-data 请求以及 boundary值问题 前言1. 请求需要携带本地资源2. 请求需要携带json3. 总结 前言 关于 Content-type: multipart/form-data可以看一下这篇文章, 分析特别详细 HTTP协议之multipart/form-data请求分析 put和post区别不大, 只是上传资…...

FBX文件结构解读【文本格式】

FBX 格式几乎受到所有 3D 引擎的支持,是 Autodesk 开发的 3D 模型的专有格式。它支持顶点、索引、法线、UV坐标、材质和动画。 FBX还支持许多其他类型的信息,但它们对游戏引擎几乎没有用处。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 有两种…...

JS基础语法

JS是一门面向对象的编程语言,运行在客户端的脚本语言,可以基于Node.js进行服务器端编程 JS的作用: 表单动态校验网页特效服务端开发 浏览器执行JS: 浏览器分为两部分:渲染引擎和JS引擎 渲染引擎用来解析HTML和CSS,…...

【Zabbix监控一】zabbix的原理与安装

利用一个优秀的监控软件,我们可以: ●通过一个友好的界面进行浏览整个网站所有的服务器状态 ●可以在 Web 前端方便的查看监控数据 ●可以回溯寻找事故发生时系统的问题和报警情况 总结:zabbix主要功能 监控,cpu负载,内存使用&a…...

图的十字链表存储结构

1.其实就是邻接表和逆邻接表的结合,说明白点,就是用箭头表示出弧头,弧尾,以及他们之间的关系 2.顶点结构 3.弧结构 3.这样根据上面的结点十字链表结构就很好分析了...

精华回顾:Web3 前沿创新者在 DESTINATION MOON 共话未来

9 月 17 日,由 TinTinLand 主办的「DESTINATION MOON: Web3 Dev Summit Shanghai 2023」线下活动在上海黄浦如约而至。 本次 DESTINATION MOON 活动作为 2023 上海区块链国际周的 Side Event,设立了 4 场主题演讲与 3 个圆桌讨论,聚集了诸多…...

【RPC】gRPC 安装及使用

本文记录下 Mac 安装 gRPC 的过程。 参考:官网 1. gRPC 安装 gRPC 安装步骤如下: 克隆 grpc 代码 git clone --recurse-submodules -b v1.58.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc注意:不要直接 git clone http…...

Pygame中Sprite类的使用3

在Pygame中Sprite类的使用2_棉猴的博客-CSDN博客中提到了通过派生自pygame.sprite.Sprite类的自定义类Zombie,可以实现一个僵尸的移动。可以通过pygame.sprite.Group类实现对多个Zombie类实例的管理,即可以实现多个僵尸的移动。 1 pygame.sprite.Group类…...

23年下考前须知-软考中级信息安全工程师

信息安全工程师主要涉及计算机信息安全方面,在计算机软硬件、网络、应用相关领域从事安全系统设计、安全产品开发、产品集成、信息系统安全检测与审计等方面工作,服务单位可以是国家机关、企事业单位及科研教学单位等。 一、考试报名时间 信安考试一年…...

关于表单快速开发低代码技术平台的内容介绍

运用什么样的表单快速开发软件平台可以实现高效率创收?随着科技的进步和飞速发展,专业的低代码技术平台已经走入了很多企业的办公职场中,它们灵活、轻量级、优质、高效、易维护等优势特点,可以高效助力广大企业提质增效&#xff0…...

比特币 ZK 赏金系列:第 1 部分——支付解密密钥

以前,我们使用零知识赏金 (ZKB) 来支付比特币上的数独解决方案。在本系列中,我们将使用 ZKB 来解决范围更广的更实际的问题。 在第 1 部分中,我们应用 ZKB 来支付解密密钥。假设 Alice 使用对称密钥 K 加密她的文件。为了安全起见&#xff0…...

【Python深度学习】深度学习中框架和模型的区别

深度学习是人工智能领域的一股强大力量,它的快速发展离不开深度学习框架和模型的进步。本文将介绍深度学习框架和模型的基本概念、它们之间的联系与区别,以及如何根据项目需求选择合适的框架和模型。 一、深度学习框架 深度学习框架是进行深度学习研究和…...

MyBatis面试题(二)

文章目录 前言一、MyBatis 与 Hibernate 有哪些不同?二、MyBatis 的好处是什么?三、简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?四、什么是 MyBatis 的接口绑定,有什么好处?五、接口绑定有几种实现方式,…...

Android之MediaMetricsService实现本质(四十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…...

对比按需计费与套餐taotoken token plan在长期项目中的成本优势分析

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比按需计费与套餐:Taotoken Token Plan 在长期项目中的成本优势分析 1. 项目背景与成本考量 在长期依赖大模型 API …...

猫头鹰的秘密网络

原文:towardsdatascience.com/the-secret-network-of-owls-d55e7b2c4910 你知道 8 月 4 日是国际猫头鹰意识日吗?我也不知道,直到无聊地浏览可爱的猫头鹰表情包,这让我来到了这个网站。然后,正如我们最近在我们的花园里…...

构建AI应用时如何利用Taotoken实现多模型备援与故障切换

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 构建AI应用时如何利用Taotoken实现多模型备援与故障切换 在构建面向生产环境的AI应用时,服务的连续性与稳定性是核心考…...

突破性技术:CXPatcher如何在Mac上实现CrossOver性能极限的完整指南

突破性技术:CXPatcher如何在Mac上实现CrossOver性能极限的完整指南 【免费下载链接】CXPatcher A patcher to upgrade Crossover dependencies and improve compatibility 项目地址: https://gitcode.com/gh_mirrors/cx/CXPatcher 对于在macOS上运行Windows应…...

别再死记0.7V了!用Multisim仿真带你玩转二极管三种等效模型(附实战电路分析)

用Multisim仿真破解二极管模型的三大迷思:从理论到实战的深度探索 在电子工程的学习道路上,二极管总是那个让人又爱又恨的元件。它看似简单,却藏着无数让初学者抓狂的细节。你是否也曾困惑:为什么教科书总说硅管压降是0.7V&#x…...

3步解锁百度网盘全速下载,让你的macOS下载速度提升70倍

3步解锁百度网盘全速下载,让你的macOS下载速度提升70倍 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 你是否曾经在macOS上使用百度网盘时…...

告别手动注册!用Inno Setup为你的C# SolidWorks插件制作一键安装包(附VS生成后事件脚本)

从代码到产品:用Inno Setup打造SolidWorks插件的专业安装体验 在SolidWorks二次开发领域,许多开发者投入大量精力完善插件功能,却在最后交付环节草草了事——简单复制DLL文件搭配批处理脚本的方式,不仅显得业余,更给终…...

Beyond Compare 5密钥生成解决方案:告别评估模式限制的专业工具

Beyond Compare 5密钥生成解决方案:告别评估模式限制的专业工具 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 当你的文件对比工具Beyond Compare 5弹出"评估模式错误"提…...

3步解锁PowerToys文本提取器:Windows用户的智能OCR终极指南

3步解锁PowerToys文本提取器:Windows用户的智能OCR终极指南 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/Powe…...

抖音批量下载工具终极指南:免费无水印高效下载完整教程

抖音批量下载工具终极指南:免费无水印高效下载完整教程 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…...