Как выполнить аутентификацию с использованием JWTTokenUserAuthentication без базы данных - PullRequest
0 голосов
/ 01 октября 2019

Henlo!

App deps:

djangorestframework-simplejwt==4.3.0, djangorestframework==3.10.3

Я пытаюсь авторизовать User с JWTTokenUserAuthentication без использования БД с использованием общего доступа SECRET_KEY.

В моих настройках у меня есть:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTTokenUserAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
}

SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': datetime.timedelta(minutes=120),
    'REFRESH_TOKEN_LIFETIME': datetime.timedelta(hours=12),
    'ROTATE_REFRESH_TOKENS': False,
    'BLACKLIST_AFTER_ROTATION': True,
    'ALGORITHM': 'HS256',
    'SIGNING_KEY': SECRET_KEY,
    'VERIFYING_KEY': SECRET_KEY,
    'AUTH_HEADER_TYPES': ('Bearer',),
    'USER_ID_FIELD': 'id',
    'USER_ID_CLAIM': 'user_id',

    'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
    'TOKEN_TYPE_CLAIM': 'token_type',

    'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
    'SLIDING_TOKEN_LIFETIME': datetime.timedelta(minutes=5),
    'SLIDING_TOKEN_REFRESH_LIFETIME': datetime.timedelta(days=1),
}

Для представлений, которые я использую rest_framework_simplejwt.views.TokenObtainPairView. И в URL моего приложения:

urlpatterns = [
    path('test-token/', TokenObtainPairView.as_view(),
         name='token_obtain_pair')
]

Итак, я делаю почтовый запрос, предоставляя ему токен на предъявителя и учетные данные как username и password. Но я получаю сообщение:

{
    "detail": "No active account found with the given credentials"
}

Что мне нужно сделать, чтобы авторизоваться правильно?

1 Ответ

0 голосов
/ 03 октября 2019
  1. Создайте суперпользователя, а затем какого-нибудь фиктивного пользователя, если это не сделано
  2. Выполните миграции.
  3. Создайте представление и соответствующий ему URL.
  4. От Почтальона, используйте ваш api токена simplejwt вместе с именем пользователя и паролем для получения токена.
  5. Используйте полученный токен доступа для вызова API, созданного вами на шаге 3.

Я могупроведите весь процесс, но таким образом вы не узнаете ничего стоящего. Я также изо всех сил новичок и ветеран VB.net/Visual Basic Developer, но я готов научиться новым вещам, таким как django ... Закатайте рукава, мужик

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...