Я пытаюсь медленно интегрировать Laravel в устаревшее приложение PHP. Одной из задач является автоматическая регистрация сеанса пользователя Laravel, когда пользователь входит в старое приложение. Я не пытаюсь внедрить аутентификацию Laravel, я просто хочу использовать существующую функциональность и заставить определенного пользователя войти в систему без проверки учетных данных. То, что у меня есть до сих пор, было собрано из хаков других людей, которые я нашел вокруг:
// Laravel authentication hook - Boostrap application
require_once getcwd() . '/../laravel/bootstrap/autoload.php';
$app = require_once getcwd() . '/../laravel/bootstrap/app.php';
$kernel = $app->make('Illuminate\Contracts\Console\Kernel');
$kernel->bootstrap();
$app->boot();
// Start Laravel session
$request = Illuminate\Http\Request::capture();
$response = $app->make('Symfony\Component\HttpFoundation\Response');
$startSession = new Illuminate\Session\Middleware\StartSession($app['session']);
// Associate server session with the authenticating user id
// I have also tried loading user model instance and then $app['auth']->login($user)
$app['auth']->loginUsingId($user_id);
$app['session']->driver()->start();
// Terminate middleware response chain with naked response
$response = $startSession->handle($request, function() use($response) {
return $response; // This response will have session cookie attached to it
});
$response->send();
После этого я получаю файл cookie laravel_session
с содержимым на клиенте. Во время запроса на вход после выполнения приведенного выше кода, если я dd(Auth::user())
, то я получаю пользователя, с которым я только что вошел в систему. Однако при последующих запросах Auth::user()
и $this->request->user()
оба возвращают null
во всех контекстах.
Как я могу принудительно активировать пользовательский сеанс Laravel без фактической аутентификации, который будет сохраняться между запросами?
Конечным результатом является то, что Laravel будет работать как «подприложение» под устаревшим приложением, в то время как существующие функции будут добавляться одна за другой, так что обе будут существовать в течение определенного периода времени, пока все функции не будут реализованы в Laravel, и он заменит существующее приложение в полном объеме. Если имеет больше смысла попытаться взять на себя устаревшую аутентификацию с помощью Laravel, а не наоборот, я открыт для этого, но я бы предпочел избежать необходимости изменять базовую таблицу пользователей (устаревшая аутентификация выполняется через LDAP, поэтому локально нет паролей, нет Remember_token, но его достаточно легко добавить, если мне нужно). Я просто ищу кратчайший путь с наименьшими усилиями/головной болью.