djon go с rest_framework_simplejwt.token_blacklist дает ошибку создания таблицы - PullRequest
1 голос
/ 11 апреля 2020

В настоящее время я начал проект, чтобы узнать больше о django + jwt и реагировать.

Вместо использования sql я использовал mongodb с django вместо использования djongo.

Хорошо работает, настраивая вещи, создавая новую модель для тестирования. Поэтому я начал искать django + jwt учебники и наткнулся на этот учебник

https://hackernoon.com/110percent-complete-jwt-authentication-with-django-and-react-2020-iejq34ta

Все отлично работает до конца о черных списках токенов

У меня есть settings.py в соответствии с предложением

SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
    'REFRESH_TOKEN_LIFETIME': timedelta(days=14),
    'ROTATE_REFRESH_TOKENS': True,
    'BLACKLIST_AFTER_ROTATION': True,
    'ALGORITHM': 'HS256',
    'SIGNING_KEY': SECRET_KEY,
    'VERIFYING_KEY': None,
    'AUTH_HEADER_TYPES': ('JWT',),
    'USER_ID_FIELD': 'id',
    'USER_ID_CLAIM': 'user_id',
    'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
    'TOKEN_TYPE_CLAIM': 'token_type',
}

, сделав от BLACKLIST_AFTER_ROTATION до True, мне нужно выполнить миграцию на python manage.py migrate

Вот где ошибка происходит, ошибка, которую я получил, это

djongo.sql2mongo.SQLDecodeError: FAILED SQL: CREATE TABLE "token_blacklist_blacklistedtoken" ("id" int32 NOT NULL PRIMARY KEY AUTOINCREMENT, "blacklisted_at" date NOT NULL)

Я искал и не мог найти решение, поэтому я попытался изменить db обратно, используя mysql, тогда миграция работала как Очарование.

Кто-нибудь знает, если я продолжаю использовать mongodb вместо mysql, есть ли обходной путь для этой миграции и функциональности для работы?

Заранее спасибо за любые советы.

1 Ответ

0 голосов
/ 11 апреля 2020

Просто предложение, просто измените USER_ID_FIELD на электронную почту или имя пользователя и попробуйте запустить миграцию. Похоже, Mon go пытается создать две колонки с именем 'id'.

Вы можете использовать SQL и no- SQL в зависимости от требований. Если вашему приложению нужны оба варианта, используйте продвинутый Postgres в проекте. У JSONField есть лучшие решения.

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