Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как обменяться csrf-токеном с фронтендом? [RSS Feed]

#1 Июнь 27, 2019 21:34:17

zlodiak
От: Россия
Зарегистрирован: 2014-01-19
Сообщения: 159
Репутация: +  0  -
Профиль   Адрес электронной почты  

Как обменяться csrf-токеном с фронтендом?

подскажите пожалуйста как djngo и frontend обмениваются csrf-токеном

Есть фронтенд на angular и бекенд на django2.2.2. Они находятся на разных серверах. Фронтенд состоит из одной странички, на которой есть форма регистрации. Я хотел бы её подписать csrf-токеном, отправить и проверить наличие токена на стороне сервера.
Вот что я пытался сделать чтобы реализовать эту идею.
view:

 from django.shortcuts import render
from django.contrib.auth.models import User
from django.http import JsonResponse
from django.views.decorators.csrf import ensure_csrf_cookie
@ensure_csrf_cookie
def get_csrf(request):
    response = JsonResponse([{"cookie_set": True}], safe=False)
    return response
def registration(request):
    # some payload
    response = JsonResponse([{"registration_successful": True}], safe=False)
    return response

На фронтенде я при загрузке странички с формой отправляю запрос, на который отвечает контролер get_csrf(). Тут по моему понимаю на фронт должен вернуться csrf-токен в виде куки.

далее при отправке формы(то есть когда пользователь кликает по кнопке submit) я мог бы извлечь куку с клиента и отправить её вместе с остальными POST-параметрами в контроллер registration(). В случае её отсутствия контроллер просто не обработает данные формы.

Проблема в том, что кука не устанавливается после первой загрузки странички на фронте. И я не понимаю почему, ведь если в адресную строку браузер вбить:
127.0.0.1:8000/app_auth/get_csrf

, то кука устанавливается.

Подскажите пожалуйста в чём я ошибаюсь и куда мне двигаться. Только пожалуйста не предлагайте высокоуровневые решения потому что я хотел бы разобраться в механизме вообще

Отредактировано zlodiak (Июнь 27, 2019 21:35:11)

Офлайн

  • Начало
  • » Django
  • » Как обменяться csrf-токеном с фронтендом?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version