我正在为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身份验证。
感谢您的阅读!