Сессии Laravel не сохраняются при вызове из Postman или Guzzle

У меня проблема с сессиями в Laravel. Мой проект состоит из двух проектов, один - API, а другой - WebApp. Оба с Laravel 5.5.

Проблема в том, что я хочу сохранить сеанс в моем проекте API, но он не сохраняется. Я сохраняю сессию в api.php следующим образом:

Route::get('test', function () {
    session(['data' => "data"]);
    session()->save();
});
  • Если я захожу в: http://mydomain.dev/test через Firefox, я вижу сеанс в Laravel DebugBar, потому что он был сохранен:

Сессии Laravel не сохраняются при вызове из Postman или Guzzle

  • Если я сделаю запрос с помощью Postman на этот URL-адрес, сеанс не появится в Laravel DebugBar! Не сохраняется.

После некоторого исследования я нашел этот вопрос, и люди говорят, что нужно включить в Kernel.php эти две строки:

protected $middleware = [
        //...
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
];

Я уже добавил эти две строки, и проблема не устранена.

То же самое и с Guzzle. Из своего веб-приложения я выполняю GET-вызов своего API. В методе, вызываемом в API, я сохраняю сеанс, и когда я получаю сеанс в другом методе API, я получаю null, потому что сеанс не был сохранен!

Я подозреваю, что проблемы Postman и Guzzle с сессиями связаны, и что мне чего-то не хватает.

Мои файлы config\session.php по умолчанию. Я знаю, что у меня есть альтернатива для сохранения сеансов в базе данных, но я бы предпочел оставить ее по умолчанию, но если у меня нет альтернативы, я изменю свой параметр SESSION_DRIVER с session.php с файл на база данных.

API есть и должны быть меньше сеансов. Они не могут с этим справиться. Вот почему используются аутентификации на основе токенов.

Afraz Ahmad 18.08.2018 18:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
1
761
1

Ответы 1

API есть и должны быть без сеанса / без состояния. Они не могут с этим справиться.

Вот почему используются аутентификации на основе токенов. Для того, чтобы убедиться в этом. Запишите route в файл web.php и выберите его с postman или browser, тогда вы увидите информацию о сеансе, если таковая имеется.

Я знаю, что API-интерфейсы не должны иметь состояния, но мне нужно сохранить сеанс в моем проекте API, потому что из API я управляю платежами PayPal, поэтому, когда PayPal перенаправляет обратно на мой веб-сайт после оплаты, мне нужен доступ к корзине покупок, которую я сохранил в сеансе .

Sergio 18.08.2018 18:36

Другие вопросы по теме