Python — Запустите Flask вместе с PHP [сессия совместного использования]

Как видно из названия, я пытаюсь запустить Flask вместе с приложением PHP.

Оба они работают под Apache 2.4 на платформе Windows. Для Flask я использую wsgi_module.

Приложение Flask на самом деле является API. Приложение PHP контролирует вход пользователей, следовательно, доступ пользователей к API. Имейте в виду, что я не могу отказаться от использования приложения PHP, потому что оно контролирует гораздо больше, чем функциональность ведения журналов [выставление счетов, доступ к журналам и т. Д.].

Поток это:

  1. Пользователь входит через приложение PHP
  2. PHP сохраняет данные пользователя в базе данных [идентификатор пользователя и флаг, указывающий, вошел ли пользователь в систему]
  3. Пользователь делает запрос к Flask API
  4. Flask проверяет, есть ли пользовательские данные в базе данных: если нет, перенаправляет на страницу входа в PHP, в противном случае позволяет пользователю использовать Flask API.

Я знаю, что между шагами 2 и 3 PHP должен поделиться с Flask переменной-cookie сеанса [user id], чтобы приложение Flask проверило, вошел ли пользователь в систему.

Все, что я пытаюсь, терпит неудачу. Я не могу передать переменные сеанса PHP в Flask.

Я знаю, что не могу передать переменные PHP во Flask, но я не уверен в этом.

Кто-нибудь пробовал что-то подобное?

Какую стратегию входа пользователя я должен реализовать в вышеупомянутых настройках?

2

Решение

Я не уверен, что это ответ, который вы ищете, но я бы не стал пытаться получить данные сеанса доступа Flask API из PHP. Сеансы и API не сочетаются друг с другом, хорошо разработанный API не требует сессий, вместо этого он на 100% не имеет состояния.

То, что я собираюсь предложить, предполагает, что и PHP, и Flask имеют доступ к пользовательской базе данных. Когда пользователь входит в приложение PHP, создайте для него токен API. Это может быть случайная последовательность символов, uuid, что угодно, если только она уникальна. Запишите токен в пользовательскую базу данных и дату окончания срока действия, если хотите. Процесс входа в систему должен передать этот токен клиенту (конечно, используйте https: //).

Когда клиенту необходимо выполнить вызов API, он должен отправлять этот токен в каждом запросе. Например, вы можете включить его в Authorization заголовок, или вы также можете использовать собственный заголовок. Flask API получает токен и ищет его в базе данных пользователей. Если он не находит токен, он возвращает 401. Если токен найден, он теперь знает, кто пользователь, без необходимости делиться сессиями с PHP. Для конечных точек API вы будете искать пользователя по токену для каждого запроса.

Надеюсь это поможет!

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]