Django-Rest-Auth 身份验证问题
Django-Rest-Auth authentication issue
我使用 Django Rest Framework 创建了 REST API,并将 django-rest-auth 用于身份验证端点。这些 API 用于移动应用程序。我使用 TokenAuthentication 来保护 API.
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
使用 APIDOC 时出现问题。我使用 coreapi 添加了 apidoc。文档也需要保护。当我使用上述设置访问 /docs/ 时出现以下错误:
'dict' object has no attribute 'data'
所以我启用了 SessionAuthentication。
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
这导致登录端点 (/rest-auth/login) 因 CSRF 错误而中断。
{
"detail": "CSRF Failed: CSRF token missing or incorrect."
}
那么,我该如何保护仅使用 TokenAuth 的端点和使用 SessionAuth 的文档呢?或者我可以完全绕过登录端点的安全性吗?
身份验证 类 可以在定义 URL 时单独定义:
url(r'^docs/', include_docs_urls(title='PeySO API Doc', public=False,
authentication_classes=[SessionAuthentication])),
这允许我们仅为文档启用 SessionAuthentication,并为 API 端点使用 TokenAuthentication。
我使用 Django Rest Framework 创建了 REST API,并将 django-rest-auth 用于身份验证端点。这些 API 用于移动应用程序。我使用 TokenAuthentication 来保护 API.
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
使用 APIDOC 时出现问题。我使用 coreapi 添加了 apidoc。文档也需要保护。当我使用上述设置访问 /docs/ 时出现以下错误:
'dict' object has no attribute 'data'
所以我启用了 SessionAuthentication。
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
这导致登录端点 (/rest-auth/login) 因 CSRF 错误而中断。
{
"detail": "CSRF Failed: CSRF token missing or incorrect."
}
那么,我该如何保护仅使用 TokenAuth 的端点和使用 SessionAuth 的文档呢?或者我可以完全绕过登录端点的安全性吗?
身份验证 类 可以在定义 URL 时单独定义:
url(r'^docs/', include_docs_urls(title='PeySO API Doc', public=False,
authentication_classes=[SessionAuthentication])),
这允许我们仅为文档启用 SessionAuthentication,并为 API 端点使用 TokenAuthentication。