Ларавельные сеансы, восстанавливающиеся при каждой нагрузке

У меня много проблем, и я действительно не могу найти решение.

Вчера я закончил работу над бродячим боксом в Ларавеле. Когда я закрыл компьютер, функции входа в систему работали нормально.

Открывая все сегодня, я вижу, что сеансы больше не работают.

Я пробовал все, что мог, но я не могу войти в систему, и данные флэш-памяти не работают.

Каждая страница загружает новый сеанс, например, используя собственный драйвер, если я вхожу в систему, он создает два сеанса – один для страницы входа и один для опубликованной страницы входа.

Если я использую драйвер базы данных, то получаю тот же результат. Каждый раз, когда я нажимаю login, я получаю еще две строки данных сеанса

Я не могу сказать, что происходит с файлом cookie, но я пробовал его, и он не работает.

Я пробовал в Chrome и IE, и ни один из них не войдет в систему. Я пытался несколько раз удалять содержимое папки хранилища и освобождать файлы cookie на стороне браузера. Я действительно думал, что это может быть связано с тем, что время vm и локальная машина различны, но они синхронизированы.

Любые идеи, что может быть причиной этого? Кто-нибудь сталкивался с этим вопросом раньше?

edit: Я также обновил виртуальную машину, и проблема все еще существует.

второе редактирование: теперь я начал с нуля с помощью digitalocean VPS с теми же результатами.

Я удалил все в файле маршрутов, и теперь все, что у него есть, это следующее

<?php Route::get('/sess/set/{value}', function($value) { Session::set('testv', $value); Return 'Set ' . $value . ' - ' . Session::get('testv'); }); Route::get('/sess/get', function() { Return 'Get ' . Session::get('testv'); }); 

Я посещаю первую страницу, и она показывает, какое значение я вкладываю в сеанс. Нажмите вторую страницу, и вы получите только часть «Get» без значения сеанса.

session_attributes всегда имеет поле _token, я пытался изменить имя сеанса и домена и до сих пор не могу заставить сеансы работать.

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

Моя проблема заключалась в том, что в моей функции были эхо-высказывания. Это не позволяло правильному созданию / сохранению сеанса.

У меня было эхо перед моим возвратом Redirect, поэтому перенаправление не получило сеанс …

 public function login() { // auth if (Auth::attempt(Input::only('email', 'password'), true)) { return Redirect::route('companies.index'); } // failed -> back to login return Redirect::back()->withErrors(['email' => 'Login failed.'])->withInput(); } 

Подробности: http://brainwashinc.com/2014/02/17/laravel-sessions-not-working-in-4-1/

У меня была эта точная проблема и с почти одинаковыми средами. По мере того как вы испытали, что закончилось для меня, я начинал совершенно новый проект Laravel 4.1, а затем копировал все. Однако я также обнаружил, что, изменив одну конфигурационную переменную, я смог исправить проблему:

В /app/config/session.php измените элемент конфигурации lifetime цикла на что-то большее, чем 0. Это исправило проблему для меня.

У меня была эта же проблема, и я уже изменил свои значения сеанса на версию 4,1. Я вошел в наш сервер и запустил команду обновления композитора, после того как все закончилось, все работает нормально.

 composer update 

Я провел целый день с той же проблемой (сеанс регенерировался почти с каждым запросом) и не нашел ничего полезного в Интернете. Проводя это здесь, если у кого-то такая же проблема.

В основном проблема заключалась в том, что cookie сеанса не был установлен правильно из-за ошибок шаблона. Поэтому, если вы столкнулись с этим, сначала проверьте, что cookie сеанса задается с каждым запросом через HTTP-заголовки.

В моем случае я ошибочно использовал что-то вроде этого в некоторых моих шаблонах:

 @section('test') <p>Some content here</p> @endsection 

Это не верно!

В Laravel 4 это должно быть @stop вместо @endsection :

 @section('test') <p>Some content here</p> @stop 

Использование @endsection сделало приложение не законченным, поэтому не было установлено cookie сеанса. Однако в файлах журналов нет никаких следов. Кстати, такая ошибка также приводит к тому, что фильтры не применяются.

У меня также есть эта проблема, и, как оказалось, она выводит данные раньше – я уже повторил некоторый текст отладки в действии контроллера, а затем попытался сначала установить переменную сеанса – сеанс просто не сохранился, и каждый раз воссоздавал – как только я удалял вывод, он работал нормально (и отлично с этого момента)

Я обновился с Laravel 5.1 до 5.2 и имел проблему с многочисленными сессиями, создаваемыми при каждой загрузке страницы. Не имело значения, какой драйвер сеанса я использовал, и ничего не изменило в конфигурации, чтобы он работал. (Я пробовал каждое предложение по каждому результату StackOverflow, выпущенному Google.)

Решение для меня: удалите «сетевое» промежуточное программное обеспечение с ваших маршрутов . По-видимому, сетевое промежуточное программное обеспечение автоматически включается в 5.2+, поэтому, если ваши маршруты также указывают его, вы завершаете создание нескольких сеансов.

Есть много причин, по которым это может произойти, я сам столкнулся с этой проблемой. Исправить для меня было изменение:

 public function getAuthIdentifier() { return $this->username; } 

в

 public function getAuthIdentifier() { return $this->getKey(); } 

на модели User .

У меня возникли проблемы, связанные с этим. Файл сеанса не создавался каждый раз, но иногда я просто не могу получить отображаемую переменную сеанса. После нескольких часов экспериментов я обнаружил, что проблема связана с Debugbar .

Если вы используете Debugbar и имеете проблемы с сеансом, отключите его и повторите попытку подтверждения. Здесь есть проблема .