войти в систему как пользователь в laravel - PullRequest
0 голосов
/ 11 марта 2020

Я хочу знать, есть ли какой-либо способ смоделировать вход в систему как пользователь и сделать сеанс для этого пользователя. Я хочу, чтобы моя справочная служба видела сайт с точки зрения пользователей, поэтому им нужно входить в систему как пользователь, пока Я не могу показать пароль пользователя администратору (это не возможно, насколько я знаю, если это не было бы хорошим решением тоже). я хочу разместить кнопку с текстом, например:

LoginAsThisUser

, и когда моя служба поддержки нажимает на кнопку, он входит в систему как пользователь, есть ли способ сделать это ??

Ответы [ 3 ]

1 голос
/ 11 марта 2020
use Illuminate\Support\Facades\Auth;

//use user_id
Auth::loginUsingId(1);

// Login and "remember" the given user...
Auth::loginUsingId(1, true);

$user=User::find($userId);


//use Authenticatable user
Auth::login($user);

// Login and "remember" the given user...
Auth::login($user, true);

также используйте Auth::guard('notDeafault')->login($user);

, если вы хотите переключить защиту по умолчанию

1 голос
/ 11 марта 2020

С фасадом Auth вы можете использовать метод loginUsingId

Auth::loginUsingId($user_id);

Этот метод позволяет принудительно войти в систему без пароля. Но это не позволяет вам извлекать куки или кеш из браузера вашего пользователя, которые могут повлиять на их просмотр.

1 голос
/ 11 марта 2020

Это возможно, и это довольно просто сделать. Все, что вам нужно сделать, это создать маршрут, что-то вроде этого:

Route::get('admin/login-as-user/{id}', 'Admin\UserController@loginAsUser')->name('login.as.user');

После этого передайте маршрут на вашу кнопку LoginAsThisUser с нужным user id:

<a href="{{route('login.as.user'), $user->id}}" class="btn btn-default">LoginAsThisUser</a>

И создайте функцию в вашем контроллере:

public function loginAsUser($id)
{
     $user = User::findOrFail($id);
     Auth::login($user);
     return redirect('/');
} 

Примечание: это не проверено, дайте мне знать, если у вас возникнут какие-либо ошибки.

...