#reactjs #django #authentication #django-rest-framework #access-token
#reactjs #django #аутентификация #django-rest-framework #токен доступа
Вопрос:
Я работаю над интеграцией с Azure AD. Мой ReactJS FE получает accessToken
, и теперь мне нужно отправить его в Django / DRF BE, чтобы аутентифицировать его и там.
Во всяком случае, я отправляю токен как a Authorization: "Bearer <token>"
и получаю Unauthorized: <route>
ответ. Если я закомментирую это, запрос будет выполнен.
Я просто пытаюсь понять пару вещей:
- Наличие
Authorization
заголовка, очевидно, говорит DRF, что с ним нужно что-то сделать. Нужно ли что-то включить в настройках DRF, чтобы справиться с этим? - Должен ли я отправлять это
accessToken
в свой API в заголовках или телеPOST
запроса?
// Authentication.js
...
const testApiAuthentication = async () => {
let accessToken = await authProvider.getAccessToken();
setAccessToken(accessToken.accessToken);
if (accessToken) {
setAuthenticatingToken(true);
axios({
method: 'post',
url: '/api/users/',
headers: {
Authorization: 'Bearer ' accessToken,
},
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error);
});
}
};
...
# views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import AllowAny
# Create your views here.
class TestView(APIView):
permission_classes = [AllowAny]
def post(self, request, *args, **kwargs):
print(request)
return Response('Hello World')
Ответ №1:
Я изменил свой TestView
на следующий, и теперь я получаю успешный ответ от API:
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import AllowAny
from rest_framework.authentication import TokenAuthentication
# Create your views here.
class TestView(APIView):
authentication_classes = [TokenAuthentication]
permission_classes = [AllowAny]
def post(self, request, *args, **kwargs):
print(request)
return Response('Hello World')
Комментарии:
1. Работает ли этот подход?
2. Здесь мы даже не проверяем токен с запросом