Я хочу, чтобы мой администратор выдавал себя за моего обычного пользователя. Я использую пакет TenancyforLaravel (https://tenancyforlaravel.com/docs/v3/features/user-impersonation/) с установкой одной базы данных и нескольких поддоменов.
Мой пользователь-администратор хочет выполнить призрачный вход в консоль панели управления арендатора, после чего я хочу выйти из системы как пользователь-арендатор и вернуться к своему профилю роли администратора.
Я не могу добиться олицетворения. Может кто-нибудь, пожалуйста, помогите мне.






Вы можете сделать следующее:
Auth::login(User::find(1));
или
Auth::loginUsingId(1);
на пути к аутентификации этого пользователя проверьте документацию laravel.
Или вы можете использовать такие библиотеки
laravel-имитировать
чтобы достичь того, чего вы ожидаете, с помощью большего (промежуточное программное обеспечение, блейды, конфигурации и т. д.). Это доступно до laravel 11.
Однако это просто обычная аутентификация, но ОП спрашивает об олицетворении, которое представляет собой нечто большее, чем просто аутентификация: оно подразумевает (или даже требует), что присутствуют дополнительные утверждения субъектов, которые позволяют пользователю вернуться к своей исходной идентичности сеанса.
@Дай, отредактировал мой ответ. Библиотека, которая позволяет олицетворенному пользователю вернуться к исходному сеансу. Надеюсь, поможет.
Спасибо, что поделились ответом. Но я также использую другую библиотеку для достижения мультитенантности. В этой библиотеке есть концепция олицетворения пользователя, мне нужна помощь по этому поводу.
@SiddharthJain добавьте к вопросу эту библиотеку, чтобы дать больше шагов
@francisco TenancyforLaravel — это имя пакета.
APP_KEY должен быть одинаковым в .env для всех установок, затем выполните следующие действия.
use Illuminate\Support\Facades\Auth;
Auth::login($user);
или
Auth::loginUsingId(1);
изучите следующие ссылки для получения подробного руководства
https://laravel.com/docs/11.x/authentication#authenticate-a-user-instancehttps://laravel.com/docs/11.x/authentication#authenticate-a-user-by-id
Ниже приведен код для входа в систему для призраков. Здесь «/home» можно заменить на ваш маршрут, по которому вы хотите, чтобы ваш пользователь попал после олицетворения, но только относительное значение.
$user = User::find($id);
$tenant = $user->tenant;
$token = tenancy()->impersonate($tenant, $id, '/home');
$domain = $user->tenant_domain->domain;
$url = "http://$domain/impersonate/{$token->token}";
return redirect()->away($url);
Это даст нам временный URL-адрес входа для выполнения олицетворения.
ты не можешь выдавать себя за другое лицо, можешь показать нам код? или выдает какую-то ошибку? сделайте
route:listпроверьте, есть ли маршрут.