python 登录状态验证PyJwt2.0之坑

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理
作者:xd_666
链接:https://juejin.cn/post/6909284302299758606

想要获取更多Python学习资料了解更多关于Python的知识可以加Q群630390733踊跃发言大家一起来学习讨论吧!

1.7版本生成token逻辑和验证逻辑是这样的

def create_token(username,password):
  """
  生成jwt
  :param payload: dict 载荷
  :param expiry: datetime 有效期
  :param JWT_KEY: 密钥
  :return: jwt
  """
  payload = {
      "iat": int(time.time()),
      "exp": int(time.time()) + 3600 * 12,
      "password": password,
      "username": username,
  }
  token = jwt.encode(payload, JWT_KEY, algorithm='HS256')
  return token.decode()
def verify(token,db):
  """
  :param token: jwt
  :param JWT_KEY: 密钥
  :return: dict: payload
  """
  try:
      payload = jwt.decode(token, JWT_KEY, algorithm=['HS256'])
      user = db.query(User).filter(User.account == payload['username']).first()
      if user == None:
          msg = '用户不存在'
          return False, msg
      if user.status == 1:
          msg = '用户被禁用'
          return False, msg
      return True, user
  except jwt.PyJWTError:
      return False, 'Token异常!' 
复制代码

2.0版本更新后

token = jwt.encode(payload, JWT_KEY, algorithm='HS256') 返回值不再是bytes而是str不再需要decode一次。 验证时默认算法参数名algorithm变为algorithms

注意: 不修改原本逻辑可将requirement.text文件中pyjwt修改为指定版本pyjwt==1.7.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值