Sanic 登录实现Token和鉴权

Sanic实现HMAC-SHA256签名认证 Sanic框架上实现HMAC签名认证,同时同样的解决思路也可以使用在fastapi和flask上。 阅读详情

蓝图

app.blueprint(Users,url_prefix='/users')

@Users.post('/login') # username (6-20) password (8-)
@validate(json=Account)
async def login(req:Request,body:Account)->HTTPResponse:
    info=req.json
    # logger.info(app.ctx.secert)
    token=JwtUtils.encryption(1,TOKEN_SECERT)
    return json(ResultUtils.success(token))

  uv add pyjwt 'passlib[bcrypt]'

import jwt
from datetime import timedelta,datetime,timezone

class JwtUtils():

    @staticmethod
    def encryption(userid:int,key:str)->str:
        payload={
            'exp': datetime.now(timezone.utc)+timedelta(days=0,minutes=120),
            'iat': datetime.now(timezone.utc),
            'sub': userid
        }
        return str(jwt.encode(payload,key,algorithm='HS256'))


    def decryption(token:str)->int:
        try:
            payload=jwt.decode(token,TOKEN_SECERT,algorithms=['HS256'])
            return payload['sub']
        except jwt.ExpiredSignatureError:
            raise SanicException(message='令牌已过期',status_code=401)
        except jwt.InvalidTokenError:
            raise SanicException(message='无效令牌',status_code=401)

中间件实现鉴权

async def auth_middleware(req:Request):
    if req.path not in ['/users/login']:
        token=req.token
        req.ctx.user=JwtUtils.decryption(token)

标准化输出

async def logging(req:Request,res:HTTPResponse):
    data=json2.loads(res.body.decode('utf-8'))
    if 'status' in data: 
        match data['status']:
            case 400:    
               return json(ResultUtils.bad_request('10400',data['message']),status=400)
            case 401:
               return json(ResultUtils.unauthorized('10401',data['message']),status=401)

单点登录和第三方登录的简单流程 目录   单点登录:       我们的单点登录系统,主要包含了登录验证,token校验 、注销、注册几大功能,单点登录系统提供了统一的登录和注册页面,提供了统一的登录token校验接口。单点登录的主要原理就是在登录成功以后,生成一个令牌,这个领跑要求每次登录唯一不可重复,我们就简单的用料一个随机的UUID,因为我们的系统在部署时,各个模块搜索通过nginx映射到痛同一个一级域名下的,coo... 阅读详情

相关推荐

FARM全栈脚手架:FastAPI+Next.js+MongoDB快速交付实践

全栈开发框架指代一类整合前后端与数据库的工程化组合方案,其核心价值在于降低环境配置复杂度、统一异步IO处理范式、保障生产就绪能力。FastAPI凭借对motor异步驱动的原生支持,在高并发数据库操作中展现确定性性能;Next.js App Router通过服务端组件实现首屏直出与安全边界隔离;MongoDB则以灵活文档模型适配动态业务演进。这类技术组合特别适用于MVP验证、创业原型、内部工具等需兼顾开发效率与运行稳定性的场景。本文聚焦FARM(FastAPI+Next.js+MongoDB)这一典型现代全栈

weixin_30267785的博客 406

web连接mysql时报错:Establishing SSL connection without server's identity verification is not recommended.

WEB应用中连接mysql数据库时后台出现如下提示: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be es...

小白他表哥的博客 413

CosyVoice WebUI API部署与集成实战:从零构建语音合成服务

语音合成(TTS)技术通过深度学习模型将文本转换为自然流畅的语音,其核心原理通常基于声学模型和声码器的组合。这项技术为内容创作、智能交互和辅助工具等领域带来了巨大价值,广泛应用于有声读物、虚拟助手和多媒体内容生成等场景。在实际工程实践中,通过RESTful API调用开源语音合成服务是实现快速集成的关键路径。本文聚焦于CosyVoice这一在中文场景下表现优异的开源方案,针对其WebUI API的部署与调用,详细解析了在Ubuntu及麒麟系统上使用Docker部署时遇到的典型问题,例如“无法验证证书”错误,

weixin_34133829的博客 532

【Sanic框架】第三章:注册登录token验证

在了解中间件之前要知道中间件是干嘛的?有什么作用?根据官网的简单描述,中间件就是修改请求和响应的,那我们就会想,请求和响应为什么要改呢?要怎么改呢?不急,首先我们把之前的能跑通的代码来进步完善,先写个登录系统。 登录 首先在数据库中新建一个用户表格user,添加字段账号和密码,添加一个账号和密码,在router/api_v1下建一个路由文件模块login.py文件,然后再在dal文件夹下建一个login_dal.py文件用来写sql语句,代码: #/routes/api_v1/login.py f

rta_bh的博客 1944

RAID 0/1/5/10 性能实测:4块 SATA SSD 组阵列,顺序读写速度对比

本文通过实测对比了RAID 0/1/5/10在4块SATA SSD上的顺序读写性能,详细展示了不同RAID级别的配置方法、理论性能与实际测试数据。测试结果显示,RAID 0在顺序读写速度上表现最佳,而RAID 10则在性能与数据安全之间取得了平衡,适合数据库服务器等关键应用场景。

weixin_33462167的博客 424

flink新版本无bat启动文件的解决办法

flink

6 4932

报错{“msg“:“invalid token“,“code“:401}问题的解决

报错{“msg”:“invalid token”,“code”:401}问题的解决: 解决办法:将精确的路由放在最上面,模糊的路由放在最下面,防止精确的路由被覆盖。

HaiBian_Ren的博客 2万+

基于labview实现MYSQL数据库查询功能

基于labview实现MYSQL数据库查询功能 前言: labview是一款功能强大的图形化编程软件,也就是俗称的G语言。 本篇将介绍如何利用labview对MYSQL进行列表分页,范围查询及模糊查询等几个可广泛应用的简易功能,但事实上labview并不擅长处理数据库,下面详细代码可体现。 数据库的环境配置方面的问题这里就不赘述了。 我们直接进入主题。 1.以下为查询界面 2.分页实现细节: ...

qq470783138的博客 7556

python sanic框架的使用2

sanic框架下使用装饰器实现token验证 token验证装饰器定义 from itwalker.param_handle import rtnCode, Param import functools # 检查token和参数 def check_token(func): @functools.wraps(func) def wrapper(*args, **kw): request = args[0] param = Param(request) #请求

it-walker的博客 322

FP7195升降压恒流驱动IC:从AC/DC 12~24V输入到稳定输出的高效电源设计实战

本文详细解析FP7195升降压恒流驱动IC的工作原理与应用实战。该芯片支持4.5V-32V宽输入范围,能自动切换升降压模式并保持输出恒定,特别适用于车载LED照明、工业电源等电压波动场景。通过实际案例分享PCB布局、元件选型及调试技巧,帮助工程师实现高效稳定的电源设计。

vodka的博客 955

达梦7实时主备集群

达梦7实时主备配置实时主备数据环境说明配置主库配置 dm.ini配置dmmal.ini配置dmarch.ini配置dmwatcher.ini配置dmwatcher.ini以mount方式启动主库设置OGUID修改数据库为primary模式配置备库 在服务器部署过程中,通常搭建有数据库主备集群,用于防备数据库服务器产生问题影响数据正常,在此,我们分享一下在虚拟机环境中模拟搭建实时主备的数据守护模式。 在搭建环境之前,需用户确认主备DM7的数据库已安装完成,且版本一致,同时还应注意各实例所在主机的操作系统位数、

g360382的博客 1022

调用登录_小程序开发:python sanic 实现小程序登录注册

#小程序# #python# #JavaScript# #web# #APP# 开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步。这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案。微信小程序登录时序图如下:这个流程分为两大部分:小程序使用 wx.login() API 获取 code,调用 wx.getUse...

weixin_30536391的博客 432

ROS2实战:构建模块化启动文件(launch file)以驱动复杂机器人系统

本文详细介绍了ROS2中构建模块化启动文件(launch file)的最佳实践,帮助开发者高效管理复杂机器人系统的节点启动。通过功能分解、参数化设计和嵌套启动等技术,实现批量管理、依赖控制和配置统一,显著提升系统稳定性和调试效率。文章包含实战代码示例和工程化建议,特别适合自动驾驶、物流机器人等场景应用。

weixin_28744613的博客 215

微信小程序开发:python+sanic 实现小程序登录注册

开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步。这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案。 微信小程序登录时序图如下: 这个流程分为两大部分: 小程序使用 wx.login() API 获取 code,调用 wx.getUserInfo...

weixin_33910460的博客 449

浅谈银行内部户治理

为避免该问题的发生,对内部户入账类交易,或内部户是可透支的账户(如系统间往来),可考虑通过异步方式更新账户余额(当然,根本上还是要考虑银行业务量的实际,异步消息接口很多时候没有同步接口方便),另外,在进行内部户余额更新时,可以通过定时的借贷方发生额轧差的方式,将多次的锁请求,简化为一次(当然,发生额明细本身在加工账户交易历史时,是不能汇总的)。内部户在银行系统中,属于业务属性较少,实现相对简单,原理也很容易讲清的系统,但管中窥豹,越是基础的东西,越能看出一家银行业务、内控的专业程度。

银行信息系统应用架构详解 789

终于找到了!Ubuntu 虚拟机卡死的终极解决方案(如何解决VMware安装Ubuntu24.04桌面进不去、黑屏、虚拟机卡死、显示不全、屏幕闪烁等问题)

终于找到了!Ubuntu 虚拟机卡死的终极解决方案(如何解决VMware安装Ubuntu24.04桌面进不去、黑屏、虚拟机卡死、显示不全、屏幕闪烁等问题)

XiaoqiangClub的博客 1万+

Sanic框架路径穿越漏洞实战:从CTF赛题到安全加固

路径穿越(Path Traversal)是Web安全中常见的漏洞类型,攻击者通过构造包含特殊字符序列(如“../”)的请求路径,试图访问服务器文件系统中超出预期目录的文件。其原理在于应用程序未对用户输入的路径进行充分规范化与校验,导致文件系统操作时解析到非授权目录。这类漏洞的技术价值在于它往往能直接导致敏感信息泄露,甚至结合其他漏洞形成攻击链。在Python生态中,Sanic作为高性能异步Web框架,其静态文件路由和中间件机制若配置不当,便可能引入此类风险。例如,当开发者仅通过简单字符串匹配检查“..”而忽

weixin_30496999的博客 282

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python vue token_GitHub - kami-sama-dp/sanic_vue: python+vue2.6+flask+ElementUI + celery+ rabbitmq ...

压测平台(locust为核心) V1.0前端Vue, 后端flask最好在chrome下打开,safari 有些样式初次加载有问题技术栈:Vue + Vuex + ElementUI + flask + peewee + HTTPBasicAuth + celery + fabric (前后端分离MVVM模式)目前前端处理跨域问题, 后期可优化成后端处理pymonitor.py 可以监控pytho...

weixin_27215337的博客 320

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python sanic 异步web框架--教你从0到1开发后端服务

Sanic Web 系统开发

wjplj的博客 855

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Sanic 微信公众号开发 --- 初探

准备工作 一个linux系统或者一个mac电脑(因为Sanic不兼容Windows) 一个服务器(云服务器就可以了,如果是在内网的很麻烦,而且不推荐那么折腾) Python3.5以上(之前版本都不支持) 一个公众号(个人或者企业都可以) 项目环境 Ubuntu 17.10 (建议用16.01或者14.04的,因为太新了gcc和g++安装部分要往下降级比较麻烦) Python 3.5.5 (...

weixin_34050427的博客 241

QAnything API安全:JWT认证与速率限制实现

本文介绍了如何在星图GPU平台上自动化部署QAnything PDF解析相关模型,实现企业级API安全防护。通过集成JWT认证与速率限制机制,该方案能有效保护敏感文档处理过程,防止未授权访问和恶意请求,适用于企业知识库问答系统的安全部署场景。

weixin_32869687的博客 88

理解JWT(JSON Web Token)认证及实践

最近想做个小程序,需要用到授权认证流程。以前项目都是用的 OAuth2 认证,但是Sanic 使用OAuth2 不太方便,就想试一下 JWT 的认证方式。 这一篇主要内容是 JWT 的认证原理,以及python 使用 jwt 认识的实践。 1 几种常用的认证机制   1.1 HTTP Basic Auth HTTP Basic Auth 在HTTP中,基本认证是一种用来允许Web浏览器...

php菜鸟技术天地 1610

理解JWT(JSON Web Token)认证及python实践

最近想做个小程序,需要用到授权认证流程。以前项目都是用的 OAuth2 认证,但是Sanic 使用OAuth2 不太方便,就想试一下 JWT 的认证方式。这一篇主要内容是 JWT 的认证原理,以及python 使用 jwt 认识的实践。 几种常用的认证机制 HTTP Basic Auth HTTP Basic Auth 在HTTP中,基本...

weixin_34290000的博客 193

flask笔记

python中的web框架 a:socket服务端 b:路由转发 c:模板渲染 Django(同步框架) a:用的别人的,bc自己写的 Flask (同步框架) a:用的别人的,b自己写的,c用的别人的(jinja2) Tornado (异步框架) abc都是自己写的 Sanic(可能会火,异步框架) 3.5以后支持,不支持windows 实现了wsgi协议的web服务器...

weixin_30745553的博客 194
上一篇: Sanic通过pydantic实现数据验证和标准化输出
下一篇: PEM证书转PPK用于navicat 连接服务器
恒云客
博客等级 码龄18年 45粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒云客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值