2016-05-25 5 views
1

Недавно я обновил свое приложение с версии laravel версии 5.1 до версии 5.2. Также я пытаюсь сохранить сеанс в базе данных, который в настоящее время хранится в файле.Не удалось сохранить сеанс в базе данных в laravel 5.2

Я изменил файл .env, чтобы включить SESSION_DRIVER = базу данных. Также я изменил файл session.config, включив в него 'driver' => env ('SESSION_DRIVER', 'database') и сгенерировал требуемую таблицу сеансов.

Но когда я попытался войти в приложение, я получаю TokenMismatchException в строке VerifyCsrfToken.php 67: если я изменяю файл SESSION_DRIVER =, то приложение работает как ожидалось.

Но это не было в версии Laravel 5.1.

Что изменилось в версии Laravel 5.2 и какие шаги необходимы для хранения сеанса пользователя в базе данных?

+1

Попробуйте очистить кеш и файлы cookie после изменения драйвера на ** базу данных **. – TheFallen

+0

Вы создали таблицу сеансов? – geckob

+0

@ TheFallen Я очистил кеш и файлы cookie, но не повезло. Я создал таблицу сеансов. – rahul16590

ответ

-1

Посмотрите, что все в порядке с ним, но почему бы вам не использовать php artisan make:auth Это создает все, что нужно для аутентификации, а также помогает удержать сессию вместо того, чтобы делать это вручную?

+0

Если я использую php artisan make: auth, то я не смогу использовать свою настраиваемую аутентификацию. Я просто хочу пользовательский сеанс в базе данных и отслеживать время входа пользователя и выхода из системы. – rahul16590

+0

Я знаю, что u не будет использовать вашу аутентификацию, я имею в виду, что он будет строить что угодно, а не u, и вы также можете отслеживать все, что захотите, с ним, –

2

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

  • На новой установке Laravel и убедитесь, что все работает, измените SESSION_DRIVER=file на SESSION_DRIVER=database

  • Выполнить следующие команды по порядку в вашей консоли в директории вашего приложения:

    php artisan session:table 
    composer dump-autoload 
    php artisan migrate 
    
  • (Этот шаг может отличаться от того, что вы сделали) В вашем файле config \ session.php найдите:

    'driver' => env('SESSION_DRIVER', 'file'), 
    

    и изменить его к следующему

    'driver' => env('SESSION_DRIVER', 'app.database'), 
    
  • В пределах одной и той же конфигурации \ файл session.php изменить конфигурацию шифровать true

  • Набор подключение и имя таблицы параметры соответствовали

    'connection' => 'database_name_here', 
    'table' => 'sessions', //here you can change but sessions is recommended until you get more comfortable with how it all works 
    
  • Попытка входа в систему t o ваше приложение и проверьте свою базу данных, чтобы узнать, все ли это работает.

Если вам нужна дополнительная помощь, вы также можете проверить несколько ресурсов, которые помогли мне решить проблему. Имейте в виду, что эти ресурсы имеют людей, имеющих похожие проблемы, но, возможно, ваша проблема аналогична их. Единственный способ узнать - исследовать. Надеюсь это поможет! =):

https://laracasts.com/discuss/channels/laravel/how-to-store-users-id-in-session-table-laravel-5

https://laravel.com/docs/5.2/session

(Видео учебник по Laravel Sessions, очень хорошее место, чтобы помочь вам попасть туда, куда вам нужно быть!) https://www.youtube.com/watch?v=-FMecyZs5Cg