如何在不使用数据库的情况下使用JWTTokenUserAuthentication进行身份验证

问题描述 投票:0回答:2

Henlo!

应用程序部门:

djangorestframework-simplejwt==4.3.0djangorestframework==3.10.3

我正在尝试使用UserJWTTokenUserAuthentication进行身份验证,而不使用共享SECRET_KEY来使用DB。

在我的设置中,我有:

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。在我的应用程序的网址中:

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

因此,我正在发出发布请求,向其提供不记名令牌和凭证,分别为usernamepassword。但我收到消息:

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

我应该怎么做才能正确验证?

python django django-rest-framework django-rest-framework-simplejwt
2个回答
0
投票
  1. 创建超级用户,然后创建一些虚拟用户,如果没有完成的话
  2. 进行迁移。
  3. 创建视图及其对应的URL。
  4. 从Postman,使用您的simplejwt令牌api,以及用户名和密码来获取令牌。
  5. 使用获得的访问令牌来调用您在步骤3中创建的api。

我可以指导整个过程,但那样一来,您将不会学到任何值得的东西。我也是一位苦苦挣扎的新手和资深VB.net/Visual Basic开发人员,但我是pois3d来学习诸如django之类的新事物。。。


0
投票

您的解决方案@catscoolzhyk是什么,我也在尝试实现Azure身份验证的这种方法。

© www.soinside.com 2019 - 2024. All rights reserved.