四、【Django】基于Jwt的token认证(登录接口)

本文介绍了如何在Django项目中使用JSONWebTokens(JWT)进行身份验证,包括使用pyjwt库生成和解码token,DjangoRESTFrameworksimplejwt库的安装与配置,以及自定义登录接口和序列化器以扩展token信息。此外,还提到了认证设置和刷新令牌的使用。

简介

生成token, 就是把  某个东西  以某个key值(密钥)  加密 一下

简单的生成token举例

下面用python举例一下

# 安装
pip install pyjwt==1.7.1  (新版本的不行)

输入python,在python解析器里,运行生成token(要传payload参数,和key)

import jwt

paylod={"name":"taoker111"}

token =jwt.encode(payload=paylod,key="tk123")

# 解码 得到payload
# jwt.decode(token,key="123")

Django_rf的simplejwt

Django 3.1 版本之前是使用rest_framework_jwt 库,   之后版本的django会遇到这个报错

Could not import 'rest_framework_jwt.authentication.JSONWebTokenAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: cannot import name 'smart_text' from 'django.utils.encoding'

djangorestframework-simplejwt 库提供了与 rest_framework_jwt 类似的 JSON Web Token (JWT) 认证功能。

1.安装

djangorestframework-simplejwt 库(如果尚未安装):

pip install djangorestframework-simplejwt

2.JWT 库默认的参数

 djangorestframework-simplejwt 默认使用一组默认值,但你可以根据需要设置这些参数。

如:

  •   默认token有效期为 5分钟
  •   生成token密钥SIGNING_KEY默认为 :setting.py 中, 创建项目就生成好了的一个 key值
  •  参数:AUTH_HEADER_TYPES 指定前缀,默认为Bearer

(from rest_framework_simplejwt.settings import )这么写然后点击settings

 如下是AUTH_HEADER_TYPES 前缀的意思,如果不配置,就是 Bearer开头

(后续可以登录成功后的access)使用pyjwt库来,用你的key来解码试试,它的信息包含这些

{'token_type': 'access', 'exp': 1689661573, 'iat': 1689661513, 'jti': 'eedea8e9d74b4da8b9e1932624952ee8', 'user_id'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值