python jwt简单封装

这里要注意使用的是pip install pyjwt 这个包

1、生成、验证、解析jwt

class JwtTools():
    def __init__(self):
        self.key = settings.SECRET_KEY
        self.algorithms = ['HS256']

    #生成jwt
    def generate_jwt(self,payload:dict):
        token = jwt.encode(payload, key = self.key, algorithm='HS256')
        return token.decode('utf-8') # PyJWT是2.0.0之前的版本,需要解码,2.0.0之后的版本不需要解码

    #验证jwt
    def verify_jwt(self,token:str):
        try:
            payload = jwt.decode(token, key = self.key, algorithms=self.algorithms)
        except jwt.ExpiredSignatureError:
            raise APIException(detail={'status': 400, 'msg': '过期'})

        return payload

    #解析jwt
    def analysis_jwt(self,token:str):
        payload = jwt.decode(token, key = self.key, verify=False, algorithms=self.algorithms)
        return payload

2、payload预定义参数说明

  • iss (Issuer):这个通常是生成token的应用的名字或者标识,例如 "my_auth_server"。
  • sub (Subject):这个通常是关于token的主题信息,例如用户的ID,"user123"。
  • aud (Audience):这个通常是token的接收者,例如 "my_client_app"。
  • exp (Expiration Time):这个是一个UNIX时间戳,表示token的过期时间。例如使用Python的 time.time() + 3600,表示1小时后过期。
  • nbf (Not Before):这个也是一个UNIX时间戳,表示在这个时间之前,token都是不可用的。例如 time.time() + 300,表示5分钟后token才可用。
  • iat (Issued At):这个是一个UNIX时间戳,表示token的发行时间。通常可以使用 time.time()。
  • jti (JWT ID):这个是token的唯一标识,可以使用UUID生成一个唯一的值,例如 "fbb9b7f2-3fe1-44f0-b3b1-5b56a1f9f4e1"。
  • 自定义其他参数
    """自定义payload内容"""
    payload = {
        'sub': userid,
        'exp': time.time() + times,
        'other': other
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容