Я использую Laravel вместе с рекомендуемым способом хранения сеансов в базе данных (https://laravel.com/docs/5.2/session). Все работает правильно, за исключением того факта, что поле user_id
в таблице sessions
всегда сохраняется какNULL
.
После некоторых исследований я нашел сообщение SO, в котором рекомендовалось использовать Guard
, стандартную библиотеку аутентификации в Laravel, чтобы заполнить ее. Вот запись:
Таблица сессий Laraveluser_id всегда null
Проблема, однако, в том, что аутентификация для приложения Laravel под рукой немного уникальна, и поэтому для него должна использоваться пользовательская логика. С учетом сказанного, я все еще хочу заполнитьИД пользователя в таблице sessions
в БД.
В той же теме выше отмечалось, что вы можете изменить следующую строку в файле vendor/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php
, чтобы она заработала:
$payload['user_id'] = $this->userId();
Я изменил строку на следующую:
$payload['user_id'] = session('id', null);
Это дает мне то, что я хочу, но изменение кода в ядре платформы Laravel, как это кажется странным для меняe.
Есть ли лучший способ сохранить идентификатор пользователя в таблице сеансов в БД с Laravel без использования Guard
и встроенной аутентификации Laravel?
Спасибо.
Редактировать : Чтобы уточнить немного, я изменяю строку file
в config/session.php
на следующее:
'driver' => env('SESSION_DRIVER', 'database'),
И затем я изменилСледующая строка в .env
до database
:
SESSION_DRIVER=database
После этого я запустил следующие строки, чтобы создать таблицу sessions
в БД:
php artisan session:table
composer dump-autoload
php artisan migrate
Сам по себебыло достаточно настроить сеансы в БД.Однако, как я упоминал в исходном посте, поскольку я не использую встроенную аутентификацию Laravel, я не могу (казалось бы) установить поле user_id
с помощью Guard.
Еще раз спасибо.