Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

csrf token missing or incorrect #49

Open
arllecchino opened this issue Apr 8, 2021 · 20 comments
Open

csrf token missing or incorrect #49

arllecchino opened this issue Apr 8, 2021 · 20 comments

Comments

@arllecchino
Copy link

arllecchino commented Apr 8, 2021

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

@marazmiki
Copy link
Owner

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

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

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

@arllecchino
Copy link
Author

arllecchino commented Apr 8, 2021

Добавил в 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/

@marazmiki
Copy link
Owner

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

@arllecchino
Copy link
Author

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

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

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

@marazmiki
Copy link
Owner

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

@arllecchino
Copy link
Author

arllecchino commented Apr 8, 2021

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

@marazmiki
Copy link
Owner

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

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

@arllecchino
Copy link
Author

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

  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). При запуске авторизации - никаких запросов не происходит в обоих случаях

@marazmiki
Copy link
Owner

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

@arllecchino
Copy link
Author

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

@marazmiki
Copy link
Owner

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

@arllecchino
Copy link
Author

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

@marazmiki
Copy link
Owner

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

@arllecchino
Copy link
Author

arllecchino commented Apr 12, 2021

image

image

@marazmiki
Copy link
Owner

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

@arllecchino
Copy link
Author

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

@arllecchino
Copy link
Author

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

@marazmiki
Copy link
Owner

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

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

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

@bogasila
Copy link

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

@arllecchino
Copy link
Author

arllecchino commented Apr 15, 2021

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants