Я хотел сохранить multiple session
для пользователя, чтобы он мог войти со своими другими идентификаторами электронной почты в одном и том же окне браузера на разных вкладках.Здесь мы рассмотрим, как мы можем управлять этим и как Gmail
управляет им.
- Сначала вам нужно управлять этим,
user
хочет войти в систему со своей другой учетной записью или переключить учетные записи.Таким образом, вы можете показать ему страницу входа в систему, добавив любую запись в url
, которая показывает, что он хочет сменить учетную запись.
Если ваш исходный URL login
равен http://www.examle.com/login
, то для множественного входа выможет дать ему URL-адрес, например http://www.examle.com/u/1/login
(вы можете увеличить число после u/
части столько раз, сколько хотите переключить учетные записи)
- Затем перейдите к своему
config/sessions.php
и отредактируйте свой cookie
выполните следующие действия:
<?php
$user_type = ( ( !empty(request()) && (int)request()->segment(2) ) > 0 ? '_'. request()->segment(2) : '');
return [
.....rest of array
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'. $user_type //This user_type generate various session keys for your multiple login according to generated URL
),
];
Затем необходимо изменить все URL-адреса на dynamic
, чтобы он мог выполняться как для обычного маршрута (without '/u/number/url' part
), так и для/u/number/url
part.
Определите следующую переменную в верхней части вашего web.php
/**
* Setting a variable to check if the user is logging in with first or multiple sessions
*/
$user_login = ( (int)request()->segment(2) > 0 ? 'u/'. request()->segment(2) : '' );
/**
* User attempting to login with other accounts
*/
Route::post($user_login. '/login', 'Auth\LoginController@login');
/**
* Get dashboard for filling the registeration forms
* Your entire app URL will now go like this, whether you can use it with user number or without it. It will go smoothly
*/
Route::get($user_login. '/dashboard', ['as' => 'dashboard', 'uses' => 'FormController@getDashboard']);
/**
* User attempting to login with other accounts
*/
Route::post($user_login. '/logout', 'Auth\LoginController@logout');
- Это работаетздорово.Спасибо всем за помощь.