Как добавить user_id к параметру входа в Laravel?

Ниже приведен некоторый метод в черте AuthenticatesUsers где Illuminate\Foundation\AuthЛаравел.

   ...
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required|string',
'password' => 'required|string',
]);
}

...

public function username()
{
return 'email';
}

Первоначально моя цель — создать еще одну форму входа с user_id и паролем на мобильном устройстве, чтобы проверить Auth () и, в случае успеха, сработать каким-либо методом и автоматически выйти из системы после этого. не могли бы вы дать мне подробный совет?

Дополнительный вопрос

как Jaskaran Singh's Совет я добавил это также, как показано ниже.

protected function authenticated(Request $request, $user)
{
if($request->Inn == 'Inn') {
return redirect()->route('mobiles_start', ['Inn' => 'Inn']);
}

elseif($request->Ut == 'Ut') {
return redirect()->route('mobiles_destroy', ['Ut' => 'Ut']);
}

return view('welcome');
}

но если войти не удалось, то он перенаправляется обратно в /login страница вместо ожидаемой страницы просмотра, предварительно определенной в маршруте (mobiles_start и mobiles_destroy) выше.
Как я мог сделать?

0

Решение

в app / Http / Controllers / Auth / LoginController.php добавьте следующие функции, это переопределит функции по умолчанию в признаке AuthenticatesUsers.

добавить функцию username ()

public function username()
{
if(request('id')){
return 'id'; // if request contains id then return it
}
return 'email'; // else return email
}

добавить функцию validateLogin ()

protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required', //remove |string
'password' => 'required|string',
]);
}

вот и все.

0

Другие решения

Вы можете войти в систему с идентификатором пользователя, как это:

if(Auth::loginUsingId($user->id)){
return response()->json(['success' => $user], $this->successStatus);
}

Вам не нужно расширять основные черты или какой-либо основной код Laravel.

2

По вопросам рекламы [email protected]