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