JWT生成,认证

DRF框架的一系列功能:认证、权限、限流,都是依赖于JWT。整个流程就是这样的: 客户端发送用户名和密码到服务端, 验证通过,生成JWT 返回JWT给客户端 下次,客户端发送请求时,携带JWT,一般是在请求头里加入Authorization,并加上JWT标注: 1234Copy { headers: { 'Authorization': 'JWT ' + token}Copy 服务端会验证 tok
摘要由CSDN通过智能技术生成

DRF框架的一系列功能:认证、权限、限流,都是依赖于JWT。

整个流程就是这样的:

  • 客户端发送用户名和密码到服务端,

  • 验证通过,生成JWT

  • 返回JWT给客户端

  • 下次,客户端发送请求时,携带JWT,一般是在请求头里加入Authorization,并加上JWT标注:

{
  headers: {
    'Authorization': 'JWT ' + token
}
 
  • 服务端会验证 token,如果验证通过就会返回相应的资源
  • 在此基础上,可以实现权限和限流

流程图如下:

jwt-diagram

jwt-diagram

而目前,在DRF项目开发过程中,token的生成、认证方式,主要有两种方式:pyjwtrest_framework_jwt

pyjwt

配置信息

import datetime 

JWT_EXPIRATION_DELTA = datetime.timedelta(seconds=300)  # 指明jwt的过期时间

REST_FRAMEWORK = { # 可以全局配置,也可以局部配置
    # 指定视图权限
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.AllowAny',  # 默认每个视图,是只有认证用户可以访问
    ),
    # 指定drf认证机制
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'user.tools.auth.JSONWebTokenAuthentication',  # 指明 jwt认证类
        'rest_framework.authentication.SessionAuthentication',  # session认证
        'rest_framework.authentication.BasicAuthentication',  # 基本认证
    ),
}

工具类

自定义方法,生成token,解析token

from datetime import datetime

import jwt
from django.conf import settings


def jwt_encode_handler(user):
   	"""
    :param user: 用户对象
    :return: 生成的token
    """
    payload = {
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值