如何添加Django Swagger弹出的密码和用户名



我正在为Django Swagger使用drf-yasg库。我需要添加用户名和密码级别的身份验证。在这个库中有三种可用的安全方案";"基本"apiKey";或";oauth2";。有没有什么方法可以在我的django项目设置中设置我的swagger凭据,并在此基础上验证swagger apidocs?

要在"DRF"one_answers"SWAGGER"面板中弹出验证窗口,只需将我箭头所指的代码行添加到您的settings.py:

"DRF"实施


REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
# the link you can read about
# https://stackoverflow.com/questions/51906745/django-rest-framework-logout-not-working-after-token-authentication
'rest_framework.authentication.BasicAuthentication', # <<--
'rest_framework_simplejwt.authentication.JWTAuthentication',
'rest_framework.authentication.SessionAuthentication',
],
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
}

REST_FRAMEWORK中,在DEFAULT_AUTHENTICATION_CLASSES中(它是一个列表(添加rest_framework.authentication.BasicAuthentication。它告诉djagno使用djagno提供的默认身份验证进行身份验证。

"SWAGGER"实施

如果你也想在"SWAGGER"中使用它,请执行以下操作:

SWAGGER_SETTINGS中,在作为dict的SECURITY_DEFINITIONS中,添加以下代码行来实现:

'basic': {
'type': 'basic'
},

默认的"招摇"设置如下:

SWAGGER_SETTINGS = {
'DOC_EXPANSION': 'list',
'APIS_SORTER': 'alpha',
'USE_SESSION_AUTH': False,
'SECURITY_DEFINITIONS': {
'Bearer': {  # <<-- is for JWT access token
'type': 'apiKey',
'name': 'Authorization',
'in': 'header'
},
'basic': {  # <<-- is for djagno authentication 
'type': 'basic'
},
},
}

注意,Bearer用于JWT访问令牌。basic用于djagno身份验证。

感谢您的阅读!

最新更新