Я использую промежуточное программное обеспечение, выбирая контент в зависимости от домена, но только в одном из них сохраняются сеансы. Идея не в том, чтобы разделить сеансы между ними. Каждый домен должен иметь свои сеансы.
Примером проблемы является то, что токены CSRF обновляются при каждой перезагрузке.
Я пытался установить конфигурации для каждого домена (имя файла cookie, путь, домен) и пробовал файлы cookie, файлы и базу данных. Ничего из этого не сработало.
Часть промежуточного кода:
config([
'session.domain' => $domain,
'session.cookie' => $slugDomain . '_session',
'session.path' => '/' . $slugDomain
]);






Есть несколько способов сделать это, здесь я делюсь одним вариантом: Вы можете передать идентификатор в URL-адресе домена 1, а затем сохранить этот идентификатор в файле cookie домена 2:
Вы можете создать файл cookie для определенного сеанса:
Route::get('setcookie', function(){
Session::setId($_GET['id']);
Session::start();
return 'Cookie created';
});`
Тогда вы сможете получить своего пользователя с помощью $user = Auth::User;
Вот как я нашел решение в моем случае.
Другим решением является установка домена в app/config/session.php следующим образом:
'domain' => '.domain.com'
Я нашел проблему. Случается, что промежуточное ПО модифицировало URI, но с двумя полосами в конце URI. Контроллеры выполнялись нормально, но из-за двойных полос в конце сеансов URI не сохранялись.
Новый код:
//...
$newReq = $request->duplicate();
$newPath = '/store' . (substr($request->path(), 0, 1) === '/' ? '' : '/') . $request->path();
$newReq->server->set('REQUEST_URI', $newPath);
return $next($newReq);
$newPath раньше было
$newPath = '/store/' . $request->path();
Это решение предназначено для общего сеанса между доменами и субдоменами. В моем случае я хочу использовать отдельные сеансы для каждого домена.