Получение текущего зарегистрированного пользователя в 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, чтобы сделать вызовы для остальных конечных устройств.