flask中使用pyjwt
**pyjwt使用教程: **
https://pyjwt.readthedocs.io/en/stable/
使用案例
import datetime
from flask import Flask, request
# 导入pyjwt
import jwt
app = Flask(__name__)
app.secret_key = "456sdcjhkgahsiugfijbxcad6745#@#@!%^&&."
@app.route('/login')
def login():
# 设置载荷信息
payload = {
"userid": 888,
# 过期时间要用0时区的。
"exp": datetime.datetime.utcnow()+datetime.timedelta(days=1)
}
# 加密并获取token
token = jwt.encode(payload, key=app.secret_key)
return "token: %s" % token
@app.route('/usercenter')
def usercenter():
# 直接通过请求头拿(会携带类型,比如: Bearer + TOKEN)
# 此时就需要split切分后才能进行jwt的decode校验
print(request.headers.get("Authorization"))
# 我们可以通过request的authorization属性直接拿到token,里面帮我们按token和type两个属性切分了
print(request.authorization.token) # 具体的token
print(request.authorization.type) # Bearer 或者 JWT
# 解码必须直接提供token,不能带有Bearer类型字符串
#(这样不能解码的!) Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOjg4OCwiZXhwIjoxNjg0MTMyNjgxfQ.KWWBcSEBxF2uo7ZYWIX69ZuGyeBi-eiV8doRt1bh0z4
#(只能这样!) eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOjg4OCwiZXhwIjoxNjg0MTMyNjgxfQ.KWWBcSEBxF2uo7ZYWIX69ZuGyeBi-eiV8doRt1bh0z4
# 解码后得到playload,注意:解码的时候必须告诉他用什么算法
try:
jwt_decode = jwt.decode(request.authorization.token, key=app.secret_key, algorithms=["HS256"])
print(jwt_decode.get("userid"))
return jwt_decode
except Exception as e:
print(e)
return "token校验出错!"
if __name__ == '__main__':
app.run(debug=True)
flask中使用pyjwt的更多相关文章
- FlASK中的endpoint问题
先贴一点有关的flask代码,时间有限,我慢慢扩充 以下是flask源码中app.py中add_url_rule的代码. 主要是view_func -- endpoint -- url 之间的对应关 ...
- Flask 中的 SQLAlchemy 使用教程
Flask 是一个 python web micro framework.所谓微框架,主要是 flask 简洁与轻巧,自定义程度高.相比 django 更加轻量级. 之前一直折腾 django,得益于 ...
- Flask中路由模块的实现
在Flask中的路由功能主要通过修饰函数route实现,下面我们就来挖掘下route在源代码中是怎么分配视图函数的. def route(self, rule, **options): def dec ...
- Flask中全局变量的实现
我们都知道在Flask中g,request,session和request是作为全局对象来提供信息的,既然是全局的又如何保持线程安全呢,接下来我们就看看flask是如何做到这点的.在源码中的ctx.p ...
- python web开发-flask中日志的使用
Flask使用日志记录的方式: 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用l ...
- Flask中使用数据库连接池 DBUtils ——(4)
DBUtils是Python的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法,也不会关闭,只是把连接重新放到连接池,供自己线程 ...
- 第七篇 Flask 中路由系统以及参数
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
- 第六篇 flask中session
Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 Flask 中 session 的使用 1. Flask 中 session 是 ...
- 第四篇flask中模板语言 jinja2
Flask中默认的模板语言是Jinja2 首先我们要在后端定义几个字符串,用于传递到前端 STUDENT = {, 'gender': '中'}, STUDENT_LIST = [ {, 'gende ...
- flask框架----整合Flask中的目录结构
一.SQLAlchemy-Utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法 import datetime from ...
随机推荐
- Linux 主机磁盘繁忙度监控实战shell脚本
Linux 磁盘繁忙度是指磁盘的使用率和活动水平.可以通过一些工具来监测磁盘繁忙度,如 iostat.iotop.sar 等. 其中,iostat 是一个常用的工具,可以提供关于磁盘活动的详细统计信息 ...
- 纯分享:将MySql的建表DDL转为PostgreSql的DDL
背景 现在信创是搞得如火如荼,在这个浪潮下,数据库也是从之前熟悉的Mysql换到了某国产数据库. 该数据库我倒是想吐槽吐槽,它是基于Postgre 9.x的基础上改的,至于改了啥,我也没去详细了解,当 ...
- 企业级低代码平台,通用代码生成平台,Java开源项目(附源码)
项目介绍 Jeecg-Boot 是一款基于代码生成器的智能开发平台!采用前后端分离架构:SpringBoot,Mybatis,Shiro,JWT,Vue&Ant Design.强大的代码生成器 ...
- 基于Spring事务的可靠异步调用实践
SpringTxAsync组件是仓储平台组(WMS6)自主研发的一个专门用于解决可靠异步调用问题的组件. 通过使用SpringTxAsync组件,我们成功地解决了在仓储平台(WMS6)中的异步调用需求 ...
- Docker常见使用
DockerFile: FROM openjdk:8 MAINTAINER guotong ADD lpl-1.0-SNAPSHOT.jar lpl-1.0-SNAPSHOT.jar EXPOSE 8 ...
- 10.0 探索API调试事件原理
本章笔者将通过Windows平台下自带的调试API接口实现对特定进程的动态转存功能,首先简单介绍一下关于调试事件的相关信息,调试事件的建立需要依赖于DEBUG_EVENT这个特有的数据结构,该结构用于 ...
- ChatGPT多个APIkey如何自主切换
chatgpt目前账户大多数为18美金,那么用户在调用api时候出现金额不足要手动更换chatgpt 当前方法为了解决多账户自主切换api使用. 创建一个名为$arr的数组,它包含几个key.我们使用 ...
- SaaS模式相较传统CRM系统有何优势?
SaaS模式的CRM客户管理系统相较于传统的CRM客户管理系统更加方便灵活,更加符合如今的市场环境.它解决了传统CRM系统投入大.维护难的难题,降低了中小企业导入CRM的门槛.下面详细说说SaaS模式 ...
- MPL协议原文
MPL协议原文 原文参考链接 中文翻译有一个,但是只翻译了两条 原文 Mozilla Public License Version 2.0 1. Definitions 1.1. "Cont ...
- 挑战程序设计竞赛 2.2 poj 3040 Allowance 贪心
https://vjudge.csgrandeur.cn/problem/POJ-3040 /* 作为创纪录的牛奶产量的奖励,约翰决定每周给贝西一小笔零用钱.FJ拥有一组N(1 <= N < ...