django rest framework jwt 出现Invalid payload问题

当使用Django Rest Framework的JWT进行身份验证时,遇到Invalid payload错误。原因在于默认的token生成依赖于username和password,若需采用不同方式登录,需自定义token的生成和验证方法。解决方法包括重写相关类,并在settings.py中更新JWT验证配置以及登录时的token生成逻辑。
摘要由CSDN通过智能技术生成

主要是因为,登录时生成token时,源码是利用username和password生成的,如果需要其它方式登录,必须修改生成和解析token的方法;重定义以下类。重定义结束后,在setting中修改jwt验证token的类,还需要修改登录时的token 的方法。

setting.py

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'verifications.authentication.JSONWebTokenAuthentication',
    ),
}

重定义文件

import jwt
from datetime import datetime

from calendar import timegm
from rest_framework import exceptions
from rest_framework_jwt.settings import api_settings
from django.utils.encoding import smart_text
from rest_framework.authentication import (
    BaseAuthentication, get_authorization_header
)
from django.utils.translation import ugettext as _

import users

jwt_decode_handler = api_settings.JWT_DECODE_HANDLER
jwt_get_username_from_payload = api_settings.JWT_PAYLOAD_GET_USERNAME_HANDLER


class BaseJSONWebTokenAuthentica
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值