В течение нескольких дней я пытался заставить эту довольно простую настройку аутентификации работать.
Я использую плагин Django REST 'django-rest-framework-jwt' для работы в JSON webаутентификация токена.
При CURLing API он работает как положено.
![enter image description here](https://i.stack.imgur.com/cJWfj.png)
Хотя, при выдаче запросов через мое приложение Angular;Я постоянно получаю несанкционированную ошибку с деталями «Детали авторизации не предоставлены».Однако при сканировании запросов ясно видно, что он присутствует (токен в запросе действителен, поскольку я использовал его в CURL ':
![enter image description here](https://i.stack.imgur.com/FZNFh.png)
Я внедряю заголовок аутентификации через перехватчик, который я написал, который выглядит следующим образом:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const auth = this.session.authorization;
if (!auth) {
return next.handle(req);
} else {
const newReq = req.clone({
setHeaders: {
Authorization: auth,
},
});
return next.handle(newReq);
}
}
Кроме того, настройки параметров JWT_AUTH определяются следующим образом:
JWT_AUTH = {
'JWT_ENCODE_HANDLER':
'rest_framework_jwt.utils.jwt_encode_handler',
'JWT_DECODE_HANDLER':
'rest_framework_jwt.utils.jwt_decode_handler',
'JWT_PAYLOAD_HANDLER':
'rest_framework_jwt.utils.jwt_payload_handler',
'JWT_PAYLOAD_GET_USER_ID_HANDLER':
'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler',
'JWT_RESPONSE_PAYLOAD_HANDLER':
'auth.views.jwt_response_payload_handler',
'JWT_SECRET_KEY': SECRET_KEY,
'JWT_GET_USER_SECRET_KEY': None,
'JWT_PUBLIC_KEY': None,
'JWT_PRIVATE_KEY': None,
'JWT_ALGORITHM': 'HS256',
'JWT_VERIFY': True,
'JWT_VERIFY_EXPIRATION': True,
'JWT_LEEWAY': 0,
'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=300),
'JWT_AUDIENCE': None,
'JWT_ISSUER': None,
'JWT_ALLOW_REFRESH': True,
'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(seconds=3600),
'JWT_AUTH_HEADER_PREFIX': 'Bearer',
'JWT_AUTH_COOKIE': None,
}
Настройки фреймворка следующие:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
),
}
Есть предложения по этому поводу? Я не уверен, что здесь происходит.
РЕДАКТИРОВАТЬ
Заголовки запросов / ответов на вкладке сети:
![enter image description here](https://i.stack.imgur.com/Ha8sm.png)