У меня много проблем, и я действительно не могу найти решение.
Вчера я закончил работу над бродячим боксом в Ларавеле. Когда я закрыл компьютер, функции входа в систему работали нормально.
Открывая все сегодня, я вижу, что сеансы больше не работают.
Я пробовал все, что мог, но я не могу войти в систему, и данные флэш-памяти не работают.
Каждая страница загружает новый сеанс, например, используя собственный драйвер, если я вхожу в систему, он создает два сеанса – один для страницы входа и один для опубликованной страницы входа.
Если я использую драйвер базы данных, то получаю тот же результат. Каждый раз, когда я нажимаю 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 и имеете проблемы с сеансом, отключите его и повторите попытку подтверждения. Здесь есть проблема .