【问题标题】:djongo with rest_framework_simplejwt.token_blacklist gives create table error带有 rest_framework_simplejwt.token_blacklist 的 djongo 给出了创建表错误
【发布时间】:2020-07-23 19:00:15
【问题描述】:

目前我开始了一个项目,以了解更多 django + jwt 和 react。

我没有使用sql,而是使用mongodbdjango,而不是使用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)

我四处寻找,找不到解决方案,所以我尝试使用 mysql 改回 db,然后迁移就像一个魅力。

有谁知道我是否继续使用mongodb 而不是mysql,是否有解决此迁移和功能工作的解决方法?

提前感谢您的任何建议。

【问题讨论】:

    标签: python mysql django mongodb jwt


    【解决方案1】:

    只是一个建议,只需将 USER_ID_FIELD 更改为 email 或 user_name 并尝试运行迁移。看起来 Mongo 正在尝试创建名为“id”的两列。

    您可以根据需要使用 SQL 和非 SQL。如果您的应用程序需要两者,则在项目中使用高级 Postgres。 JSONField 有更好的解决方案。

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 1970-01-01
      • 2020-08-28
      • 2022-11-10
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 2019-01-12
      • 2021-11-28
      相关资源
      最近更新 更多