restframework-jwt не работает с классом ручной модели - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть только начальное представление о django restframework-jwt.Когда я пытаюсь пройти аутентификацию с помощью своего пользовательского класса модели, он показывает

"non_field_errors": ["Невозможно войти в систему с предоставленными учетными данными."]

Но я могу сгенерировать токен с табличными данными " auth_user "

model.py содержит класс пользователя & user_manager

settings.py

INSTALLED_APPS = [
'rest_framework',
'rest_framework_jwt',
'rest_framework.authtoken', 
 ]

AUTH_USER_MODEL = '**app_name**.Users'
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.BasicAuthentication',
    'rest_framework.authentication.SessionAuthentication',
)
}

JWT_AUTH = {

'JWT_VERIFY': True,
'JWT_VERIFY_EXPIRATION': True,
'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=3000),
'JWT_AUTH_HEADER_PREFIX': 'Bearer',
'JWT_PAYLOAD_HANDLER':
'rest_framework_jwt.utils.jwt_payload_handler',

 }

1 Ответ

0 голосов
/ 08 декабря 2018

Вы можете изменить свой файл settings.py следующим образом:

Также добавьте новое приложение в INSTALLED_APPS и добавьте AUTH_USER_MODEL

INSTALLED_APPS = [
'rest_framework',
'rest_framework_jwt',
'app_name'
 ]

AUTH_USER_MODEL = '**app_name**.Users'

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (        
        'rest_framework.permissions.AllowAny',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    ),
}


JWT_AUTH = {
    'JWT_ENCODE_HANDLER':
    'rest_framework_jwt.utils.jwt_encode_handler',

    'JWT_DECODE_HANDLER':
    'rest_framework_jwt.utils.jwt_decode_handler',

    'JWT_PAYLOAD_HANDLER':
    'rest_framework_jwt.utils.jwt_payload_handler',

    'JWT_PAYLOAD_GET_USER_ID_HANDLER':
    'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler',

    'JWT_RESPONSE_PAYLOAD_HANDLER':
    'rest_framework_jwt.utils.jwt_response_payload_handler',

    'JWT_SECRET_KEY': SECRET_KEY,
    'JWT_GET_USER_SECRET_KEY': None,
    'JWT_PUBLIC_KEY': None,
    'JWT_PRIVATE_KEY': None,
    'JWT_ALGORITHM': 'HS256',
    'JWT_VERIFY': True,
    'JWT_VERIFY_EXPIRATION': True,
    'JWT_LEEWAY': 0,
    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
    'JWT_AUDIENCE': None,
    'JWT_ISSUER': None,

    'JWT_ALLOW_REFRESH': False,
    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),

    'JWT_AUTH_HEADER_PREFIX': 'JWT',
    'JWT_AUTH_COOKIE': None,

}
...