Получение текущего зарегистрированного пользователя в Django/Angular

Я создаю Django / Angular проект, но у меня возникла проблема. В обычных django-приложениях без frontend-фреймворка мы можем просто сделать request.user и можем получить необходимую информацию. Я уже создал конечные точки api для моей модели User, но есть ли способ напрямую найти идентификатор пользователя, чтобы сделать такой вызов:

  getUserById(userId: number): Observable<User> {
    const url = `${this.baseUrl}users/${userId}/`;
    return this.http.get<User>(url);
  }

Или мне нужно установить другой сериализатор, например, такой:


class CurrentUserView(APIView):
    permission_classes = [IsAuthenticated] 

    def get(self, request):
        user = request.user  # Get the current logged-in user
        serializer = UserSerializer(user)
        return Response(serializer.data)

сделать вызов этой конечной точки и затем с данными отсюда получить доступ к остальным конечным точкам? Также сейчас я не настроил механизм аутентификации. Может быть, в будущем, если я это сделаю, мне не понадобится такая конечная точка? Заранее спасибо

Я предполагаю, что вы используете аутентификацию сеанса, поэтому в этом случае вы должны добавлять опцию withCredentials: true к каждому запросу.

Рассмотрите возможность создания перехватчика, который будет делать это с каждым запросом.

Пример: Angular 4 - установка withCredentials при каждом запросе - cors cookie

Неправильная настройка аутентификации является причиной возникновения этой проблемы. Пожалуйста, попробуйте интегрировать django-rest-framework-simplejwt на стороне django. Этот токен обычно содержит идентификатор пользователя, и на стороне фронтенда вы можете сохранить этот токен в localstorage, чтобы сделать вызовы для остальных конечных устройств.

Вернуться на верх