Проблема сохранения сеанса между двумя проектами Django, использующими как JWT, так и аутентификацию сеансаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема сохранения сеанса между двумя проектами Django, использующими как JWT, так и аутентификацию сеанса

Сообщение Anonymous »

Предыстория
Проект A
Устаревшая система
Полнофункциональный сервер Django на основе языка шаблонов
Использование сеансов для аутентификации
Python версии 3.8
Django версии 3.2
Проект B
Новый проект
Django на основе JSON Сервер RESTful API
Использование JWT и сеансов для аутентификации
Python версии 3.11
Django версии 5.0
База данных: MariaDB
В настоящее время мы миграция из устаревшего проекта A в проект B. В ходе этого процесса мы переключили метод аутентификации на JWT, но, поскольку вся устаревшая система еще не была перенесена, мы сохраняем параллельно с ней метод сеанса. Оба проекта используют UserenaAuthenticationBackend и используют django.contrib.auth.authenticate и django.contrib.auth.login для входа в систему.
В этом состоянии пользователи могут войти в систему, используя либо проект A, либо проект B. , который использует одну и ту же базу данных. Возникают следующие проблемы:
КАК ЕСТЬ
  • Вход в А из одного браузера -> Вход в систему B из другого браузера -> Пользователь выходит из A в первом браузере.
  • Вход в B из одного браузера -> Вход в A из другого браузера -> Пользователь выходит из B в первом браузере.
  • Вход в A из одного браузера -> Вход в A из другой браузер -> Пользователь остается авторизованным в A в первом браузере.
  • Вход в B из одного браузера -> Вход в B из другого браузера -> Пользователь остается авторизованным в B в первом браузере.
TO-BE
Цель состоит в том, чтобы пользователь оставался в системе на протяжении нескольких сеансов, независимо от того, входит ли он в систему из разных проектов или браузеров.
Подозрительная часть
SESSION_COOKIE_NAME унифицирован с тем же значением имени.
Я подозревал, что эта проблема может быть связана с различиями версий, но помимо изменения формата session.encode в Django 4.0, которая была связана с изменением алгоритма по умолчанию на SHA1, существенных изменений не произошло. И проект A, и проект B используют SHA256, так что, похоже, это не является причиной.
Сроки сеансов в базе данных не истекли. Сеансы создаются для каждого браузера, но при повторном входе в систему сеанс соответствующего браузера перезаписывается, а не истекает срок действия других сеансов (даты истечения срока действия остаются неизменными).

Подробнее здесь: https://stackoverflow.com/questions/786 ... nd-session
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»