2016-05-04 6 views
1

Я запускаю jQuery пост ajax для своего контроллера, где я проверяю, существует ли сеанс. Если это так, я читаю значение, забудьте свой сеанс и верните некоторые данные в представление.Не могу забыть сеанс из запроса ajax в laravel 5.2

Если я использую session() -> имеет в функции контроллера после того, как я использую забудьте, он удаляется. Но когда я перезагружаю страницу и снова выполняю запрос ajax, сеанс все еще существует.

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

$request->session()->forget('last_history_id'); 
$request->session()->pull('last_history_id') 

Так что мой вопрос, почему я не могу забыть сессий в моей просьбе AJAX, так что ушел со следующей перезагрузки страницы?

+0

Где вы устанавливаете значение этого сеанса? Возможно, перезагрузка страницы заставляет снова задавать переменную сеанса. – Jerodev

+0

Это не тот случай, когда я устанавливаю сеанс при отправке формы, а затем перенаправляю пользователя в список, где я делаю свой пост ajax. – tobros91

+0

Я подозреваю, что вы используете драйвер 'file' для сеансов, верно? – camelCase

ответ

1

Я предлагаю изменить с file драйвер на database драйвер (или любой другой драйвер, кроме файла, если на то пошло) в файле config/session.php.

При использовании и асинхронных вызовов существует known issues. Я столкнулся с точной проблемой, которую вы получили, и после перехода на database проблема была решена.

Вы можете легко переключаться на database. Вот docs для получения дополнительной справки, но также и соответствующего кода ниже.

Вам необходимо настроить таблицу для хранения элементов сеанса. Вы можете использовать php artisan session:table для генерации миграции. Затем только composer dump-autoload, а затем php artisan migrate. Это создаст для вас таблицу в вашей базе данных.

Наконец, просто скажите Laravel, что вы предпочитаете этот драйвер. В зависимости от того, как вы настроили среду, это либо закодировано в config/session.php, либо вытащено из вашего файла .env.

+1

Спасибо, это комбинация файлового драйвера и laravel homestead, при развертывании на моем тестовом сервере эта проблема уходит. Попробуем обновить поле для усадьбы и посмотрим, исчезнет ли он, прежде чем перейти к драйверу базы данных. – tobros91

+0

@ tobros91 Да, это то, что я собрал из этой длинной записи GitHub. Для меня проблема была решена после изменения драйвера базы данных, но я не работаю в Homestead, поэтому, возможно, обновление этого может помочь вашему делу. Я преследовал свой хвост на полдня на этом :) – camelCase

+0

@ tobros91 любые обновления по этому поводу? Разрешено ли обновление или переход на другой драйвер? – camelCase

0

Эта проблема, вероятно, связано с моим:

Я недавно был вопрос, где session_id меняется при использовании AJAX запросов. Может быть, когда вы проверяете сеанс, это на самом деле новый. Поэтому, когда вы его забываете, это не влияет на первичный сеанс браузеров.

Возможно, проблема связана с двойным связыванием промежуточного программного обеспечения web по маршруту. Я не заметил, что сеть уже была применена в RouteServiceProvider. После удаления 'middleware' => 'web' на моих проблемных маршрутах эта проблема полностью исчезла.

Смежные вопросы