python - 如何在没有数据库的情况下使用 JWTTokenUserAuthentication 进行身份验证

标签 python django django-rest-framework django-rest-framework-simplejwt

你好!

应用程序部门:

djangorestframework-simplejwt==4.3.0, djangorestframework==3.10.3

我正在尝试使用 JWTTokenUserAuthenticationUser 进行授权,而不使用使用共享 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),
}

对于 View ,我使用 rest_framework_simplejwt.views.TokenObtainPairView。 在我的应用程序的网址中:

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

因此,我正在发出发布请求,向其提供 Bearer token 和凭据作为 usernamepassword。但我收到消息:

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

我应该怎么做才能正确授权?

最佳答案

  1. 创建一个 super 用户,然后创建一些虚拟用户,如果没有完成的话
  2. 进行迁移。
  3. 创建 View 及其对应的 URL。
  4. 从 Postman 中,使用您的 simplejwt token api 以及用户名和密码来获取 token 。
  5. 使用您获得的访问 token 调用您在第 3 步中创建的 api。

我可以指导整个过程,但那样你就不会学到任何有值(value)的东西。我也是一个苦苦挣扎的新手和老手 VB.net/Visual Basic 开发人员,但我很想学习像 django 这样的新事物......卷起你的袖子,伙计

关于python - 如何在没有数据库的情况下使用 JWTTokenUserAuthentication 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58178938/

相关文章:

Django休息框架: can't get user id from given token

mysql - 嵌套模型上的 Django JOIN 带有查找字段的外键

Python正则表达式匹配任何顺序

python - 类型错误 : can't use a string pattern on a bytes-like object

python - 为什么它只打印 6 个字段而不是 7 个 python

ajax - django,表单POST提交后返回上一页

python - Feincms ApplicationContent 覆盖上下文

python - 在 linux 中将环境变量添加到 $PYTHONPATH 时遇到问题

python - Django - 应用程序特定的中间件

python - Django Rest 显示 TemplateDoesNotExist