Как я могу сохранить идентификатор пользователя в таблице сессий базы данных с приложением Laravel? - PullRequest
0 голосов
/ 17 ноября 2018

Я использую 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.

Еще раз спасибо.

...