Я переключаю пользователей в laravel, и мне это тоже удалось, но дело в том, что когда я перенаправляю пользователя на панель управления после успешного входа в систему, он перенаправляется в форму входа, а я не знаю, что я делаю не так. Вот код, который я использую.
public function user_reauthenticate(Request $request) {
$input = Input::all();
$data = User::where('email', $input['email'])->first();
if ($data) {
if (Hash::check($input['password'], $data->password)) {
Session::put('email', $input['email']);
$newuser = Student::find($input['new_user']);
session(['orig_user' => $data->id]);
Auth::login($newuser);
return Redirect::back();
} else {
$response = 'Wrong Credentials';
}
} else {
$response = 'User does not exist';
}
}
Может ли кто-нибудь помочь мне разобраться в проблеме?
Попытки авторизации где
вы перенаправляете обратно, как этот return Redirect::back();, поэтому он перейдет только к форме входа в систему.
php artisan make: auth действительно круто: D автоматический вход / регистрация
проверьте ответ ниже.
Почему бы просто не использовать команду php artisan make: auth, а затем переопределить там методы.






Вы можете войти в систему с
Auth::loginUsingId(1);
Новые отредактированные
// If you have the guard student and multiple auth
$auth = auth()->guard('student');
$objAuth = $auth->loginUsingId($input['new_user']);
//Single Auth
$objAuth = Auth::loginUsingId($input['new_user']);
Нет, попробовал это решение, он все еще перенаправляет меня на вход из
$ input ['new_user'] Надеюсь, у вас есть идентификатор студента?
Да, здесь у меня есть идентификатор того пользователя, на чью учетную запись нужно переключить пользователя \
Сэр, когда я делаю dd(Auth::user()->id);, я получаю идентификатор нового пользователя, на которого мне нужно переключиться, но он всегда перенаправляет обратно в форму входа
вы используете множественную авторизацию?
Да, я использую мульти-аутентификацию, одна - это таблица пользователей, а другая - таблица учеников.
@MohsinAbbas Зачем просто создавать role_id, который относится к таблице ролей в таблице пользователей, и просто запрашивать его там. Например, если role_id пользователя равен 1, то это пользователь, а если 2, то он студент. Это был бы самый эффективный подход
@ d3cypher, сэр, я просто не могу, потому что база данных предоставляется клиентом, и я просто не могу ничего изменить в базе данных
Что ж, в этом случае вы предоставляете только одну форму / 2 формы входа на основе ваших пользователей.
@ d3cypher, сэр, есть 2 формы входа: одна для пользователей, а вторая для студентов.
В этом случае вам будет легко просто использовать Auth :: try
if Auth :: try (array $ credentials = [], bool $ Remember = false, bool $ login = true) {// условие здесь} @MohsinAbbas
Добавьте это в начало файла: - use Illuminate\Foundation\Auth\AuthenticatesUsers;
После этого добавьте функцию if, как показано ниже, в уже заполненный код: -
public function user_reauthenticate(Request $request)
{
use AuthenticatesUsers;
$input = Input::all();
$data = User::where('email', $input['email'])->first();
if ($data) {
if (Hash::check($input['password'], $data->password))
{
Session::put('email', $input['email']);
$newuser = Student::find($input['new_user']);
session(['orig_user' => $data->id]);
Auth::login($newuser);
if ($this->attemptLogin($request))
{
return $this->sendLoginResponse($request);
}
}
else
{
$response = 'Wrong Credentials';
}
}
else
{
$response = 'User does not exist';
}
}
После этого метода переопределите этот метод следующим образом: -
protected function authenticated(Request $request, $user)
{
return redirect()->route('dashboard');
}
Проверьте, назван ли маршрут вашей панели инструментов приборной панелью или нет.
Нет, он по-прежнему перенаправляет меня обратно в форму входа, а не в панель управления
Вам нужно использовать попытки авторизации