小编Yos*_*SaL的帖子

DRF 壮观未发现自定义身份验证扩展类

当从rest_framework_simplejwt.authentication.JWTAuthentication drf-spectaulous swagger-ui 授权按钮扩展新的令牌身份验证类时,授权按钮消失并且无法添加令牌承载者,我想当您子类化时它会出错。
重现步骤:
首先,创建一个 Django 项目,其中安装有 Rest Framework 和 drf-spectaulous 以及简单的 jwt,并按照文档指导进行配置。到达 /swagger-ui/ ,它工作正常。
然后创建 JWTAuthentication 的子类,如下所示:

from rest_framework_simplejwt.authentication import JWTAuthentication as JWTA

class JWTAuthentication(JWTA):
    pass
Run Code Online (Sandbox Code Playgroud)

并在您的设置中:

REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'path_to_your_module.JWTAuthentication',
    ),
}
Run Code Online (Sandbox Code Playgroud)

现在,如果您转到 /swagger-ui/ ,则没有授权按钮!!! 我怎样才能解决这个问题?
我什至尝试创建一个 AuthenticationExtension ,例如:

from drf_spectacular.contrib.rest_framework_simplejwt import SimpleJWTScheme

class SimpleJWTTokenUserScheme(SimpleJWTScheme):
    target_class = 'path_to_your_module.JWTAuthentication'
Run Code Online (Sandbox Code Playgroud)

但无法在任何地方、互联网上或文档中注册它!覆盖身份验证类时如何修复授权按钮?
编辑:按照 JPG 所说的操作并在设置中导入扩展名:

# settings.py
from path.to.custom.extension import SimpleJWTTokenUserScheme
REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'path_to_your_module.JWTAuthentication',
    ),
}
Run Code Online (Sandbox Code Playgroud)

引发异常:

  File "/home/hamex/current/spec/env/lib/python3.8/site-packages/django/core/handlers/exception.py", …
Run Code Online (Sandbox Code Playgroud)

django swagger django-rest-framework django-rest-framework-simplejwt drf-spectacular

6
推荐指数
1
解决办法
7747
查看次数