@awesomeddd

Удаленная авторизация REST API, как реализовать?

Есть сервер на Django REST API
Есть веб-приложение на обычном Django.
Т.е. осуществляется связь:
Django REST API Server <=> Django app <=> Client
Пытаюсь залогиниться, отсылая POST запрос в форму авторизации, предварительно предложив ввести логин и пароль в самописной форме на Django:
В forms.py:
<form action="{% url 'todolist:login' %}" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Login" />
</form>

В views.py:
class LoginView(View):
    @method_decorator(csrf_exempt)
    def get(self, request, *args, **kwargs):
        form = LoginForm()
        return render(request, 'login.html', {'form': form})
    @method_decorator(csrf_exempt)
    def post(self, request, *args, **kwargs):
        form = LoginForm(request.POST)
        if form.is_valid():
            post_data = {'username': form.cleaned_data['username'], 'password': form.cleaned_data['password']}
            response = requests.post('http://127.0.0.1:8080/api-auth/login/', data=post_data)
            return HttpResponseRedirect('/todolists/')

При отправке POST запроса в ответ приходит 403 с указанием: Forbidden (CSRF cookie not set.): /api-auth/login/
Как решить эту проблему?
  • Вопрос задан
  • 1067 просмотров
Пригласить эксперта
Ответы на вопрос 1
@DmitryBurn
Бекенд разработчик Python/Django
На стороне django-rest сервера стоит защита csrf. Нужно в момент вызова requests.post ( обращение по при) подкинуть в куки csrf token (его можно получить из текущего реквеста)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы