django-ulogin icon indicating copy to clipboard operation
django-ulogin copied to clipboard

csrf token missing or incorrect

Open arllecchino opened this issue 3 years ago • 20 comments

Сделал все по гайду, спасибо. Понятно и удобно. При переадресации на https://... джанга выдает ошибку "csrf token missing or incorrect". Подскажите, сталкивались ли с этим и как можно победить? При переадресации на http://... ошибки нет. Учитывая, что скрипт ulogin выполняется на внешнем ресурсе, вставить crrf токен я не могу python 3.6.9 django 3.1.5

arllecchino avatar Apr 08 '21 05:04 arllecchino

Здравствуйте,

Чтобы понять что здесь происходит, нужно больше информации. Опишите процесс целиком, что происходит, на какой странице, кто редиректит; если есть исключение, покажите трейс. Укажите настройки, которые меняли. Всё это важно.

Но вероятнее всего, ошибка "csrf token missing or incorrect" происходит тогда, когда пытаются редиректить на то место, куда редиректить не стоит.

marazmiki avatar Apr 08 '21 07:04 marazmiki

Добавил в settings.py:

INSTALLED_APPS = [
...
    'django_ulogin'
]

ULOGIN_DISPLAY = 'panel'
ULOGIN_THEME = 'flat'
ULOGIN_REDIRECT_URL = 'https://ig2u2.fvds.ru'

в urls.py

urlpatterns = [
  ...
    path('ulogin/', include('django_ulogin.urls')),
]

в login.html

	{% load ulogin_tags %}
	{% ulogin_widget %}	

путь для просмотра:
https://ig2u2.fvds.ru/login/

arllecchino avatar Apr 08 '21 07:04 arllecchino

Почему-то вспомнился вот этот недавний тикет #46. Почитайте, мне кажется, Вам должно помочь :)

marazmiki avatar Apr 08 '21 07:04 marazmiki

из тикета вычитал для себя 2 вещи:

  1. прописывание урлов на разных уровнях дало разный результат автору того тикета. Я пробовал и так и так - результат тот же
  2. ваша прилада "в коробке" сама парсит ответы от ulogin. Я так и предполагал. Поэтому ничего, кроме вышеописанного в своем приложении не писал для этих задач. Модель юзера у меня типовая, так что (как сказано в гайде) все должно работать "из коробки"

Доп. вопрос: юзеры в БД не создаются, по крайней мере я их не вижу через админку джанги

arllecchino avatar Apr 08 '21 08:04 arllecchino

Я имел в виду совет попробовать убрать REDIRECT_URL. Так, интересу для

marazmiki avatar Apr 08 '21 08:04 marazmiki

пробовал изначально) Сайт опубликован локально с пробросом в апаче image

arllecchino avatar Apr 08 '21 08:04 arllecchino

Не очень понятен смысл картинки, что она должна отображать?

Давайте попробуем с другой стороны: какие запросы и от кого приходят на джангу? Давайте посмотрим в консоль разработчика. Интересуют запросы и HTTP-методы, которыми они вызываются

marazmiki avatar Apr 09 '21 03:04 marazmiki

Смысл картинки - отобразить то, что мне лень было писать буквами:

  1. при отключенной переадресации после выполнения авторизации через соцсети django-ulogin возвращает http://127.0.0.1:8099/ulogin/postback/?next=http://127.0.0.1:8099/login/
  2. Браузер не может отобрать эту строку.
  3. такой адрес выдается так как сайт опубликован локально, с пробросом http://127.0.0.1:8099 на домен.

по запросам в консоле не очень понял, что смотреть... при выключенном пробросе пишет то, что на картинке. При включенном - ulogin.js message: open не появляется... image

страницы отдаются GET'ом (вижу в cmd). При запуске авторизации - никаких запросов не происходит в обоих случаях

arllecchino avatar Apr 09 '21 11:04 arllecchino

Интересует вкладка Network. Какие урлы запрашиваются и какими методами.

marazmiki avatar Apr 09 '21 16:04 marazmiki

image это после успешной аутентификации через гугл

arllecchino avatar Apr 12 '21 05:04 arllecchino

отлично. Давайте теперь посмотрим, что написано в первом запросе. Request headers, response headers

marazmiki avatar Apr 12 '21 07:04 marazmiki

хм... вижу, только общение с яндексом image

arllecchino avatar Apr 12 '21 09:04 arllecchino

В списке сетевых запросов кликните на запрос lg2u2.fvds.ru, где ответ 403. Справа будет информация о том, что произошло, включая заголовки запроса и ответа

marazmiki avatar Apr 12 '21 09:04 marazmiki

image

image

arllecchino avatar Apr 12 '21 09:04 arllecchino

То есть получается, что идёт POST-запрос на индексную страницу. А не на ту, которая парсит токен

marazmiki avatar Apr 12 '21 09:04 marazmiki

да, в этом случае прописана переадресация на индекс. А какая страница парсит токен? Я вьюхи никакие не менял. Делал строго по гайду

arllecchino avatar Apr 12 '21 09:04 arllecchino

вставил {% load ulogin_tags %} {% ulogin_widget %} на индекс. Без переадресации браузер пытается открыть путь http://127.0.0.1:8099/ulogin/postback/?next=http://127.0.0.1:8099/, ему не удается. С переадресацией то же, что выше. В общем, не проблема расположения виджета, проблема в чем-то другом....

arllecchino avatar Apr 12 '21 11:04 arllecchino

А какая страница парсит токен?

Вот эта. Как раз в вышеупомянутом #46 это обсуждалось

Запросы от юлогина должны идти на эту страницу. А она сама в случае успешного логина сделает редирект на страницу, указанную в ?next=

marazmiki avatar Apr 12 '21 11:04 marazmiki

В settings нужно добавить: ULOGIN_REDIRECT_URL = 'https://ig2u2.fvds.ru/ulogin/postback/'

bogasila avatar Apr 14 '21 14:04 bogasila

спасибо! Можно закрывать

arllecchino avatar Apr 15 '21 06:04 arllecchino