- 封装
- 使用
from datetime import datetime, timedelta
import jwt
from flask import current_app
def generate_jwt(payload, expiry, secret=None):
"""
生成jwt
:param payload: dict 载荷
:param expiry: datatime 有效期
:param secret: 盐
:return: 返回token
"""
if "expiry" not in payload:
payload["expiry"] = expiry
# 判断盐是否存在
if secret:
secret = current_app.config["SECRET_KEY"]
# 生成token jwt.encode
token = jwt.encode(payload, secret, algorithm="HS256")
return token
def verify_jwt(token, secret=None):
"""
校验token
:param token: token值
:param secret: 盐
:return: payload 载荷
"""
# 判断盐是否存在
if not secret:
secret = current_app.config["SECRET_KEY"]
try:
# 校验token jwt.decode
payload = jwt.decode(token, secret, algorithms="HS256")
except Exception as e:
print("错误信息>>", e)
# 校验失败返回None
payload = None
return payload
def _generate_token(user_id):
"""
生成token
:param user_id: 用户id
:return: token
"""
# 获取盐
secret = current_app.config['SECRET_KEY']
# 定义过期时间 两小时
expiry = datetime.utcnow() + timedelta(hours=2)
# 生成token
token = generate_jwt({"user_id": user_id}, str(expiry), secret)
return token
使用
在登录视图中使用_generate_token方法生成token
token = _generate_token(user_id) # 然后返回给前端 return token



