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 ...
随机推荐
- 性能调优 session 1 - 计算机体系结构 量化研究方法
近期本人参与的存储系统项目进入到性能调优阶段,当前系统的性能指标离项目预期目标还有较大差距.本人一直奉行"理论指导下的实践",尤其在调试初期,更要抓住主要矛盾,投入最少的资源来获取 ...
- RabbitMQ 如何实现延迟队列?
延迟队列是指当消息被发送以后,并不是立即执行,而是等待特定的时间后,消费者才会执行该消息. 延迟队列的使用场景有以下几种: 未按时支付的订单,30 分钟过期之后取消订单. 给活跃度比较低的用户间隔 N ...
- ios添加库文件
- Linux下Python环境安装
Linux通常都附带Python环境,但是Linux附带的大多数Python都是2.7.5版本.如果我们想使用Python3或者Anaconda3,最好安装一个新的Python3环境,但不要尝试删除P ...
- PostgreSQL学习笔记-1.基础知识:创建、删除数据库和表格
PostgreSQL 创建数据库 PostgreSQL 创建数据库可以用以下三种方式:1.使用 CREATE DATABASE SQL 语句来创建.2.使用 createdb 命令来创建.3.使用 p ...
- 区间检测(range)
区间检测(range) 时间限制: 1 Sec 内存限制: 128 MB 题目描述 给定一个长度为n的序列,进行m次检测,每次检测某个区间中,是否有重复的数. 输入 第一行,两个整数n和m,表示序列 ...
- K8S太庞大,这款PasteSpider绝对适合你!一款轻量级容器部署管理工具
PasteSpider采用.netcore编写,运行于linux服务器的docker/podman里面,涉及的技术或者工具有podman/docker,registry,nginx,top,ssh,g ...
- Vue之属性
Vue中的属性:举例 看一下就明白了 <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- QT打开摄像头(自定义取景器)
自建取景器 .h #ifndef CAMERASURFACE_H #define CAMERASURFACE_H #include<QAbstractVideoSurface> #incl ...
- facebook广告投放优化师
由来(一个技术的自嗨) 你以为我是个广告优化师?错,我是个java开发从事者.一开始我是想介绍某人转行去做广告投放优化师的,毕竟自己也在某出海公司待过一段时间,对于技术来说出海的核心是支付系统业务和广 ...