переопределить метод входа в laravel

89
11

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

public function login(Request $request)
{
$this->validateLogin($request);

// If the class is using the ThrottlesLogins trait, we can automatically throttle
// the login attempts for this application. We'll key this by the username and
// the IP address of the client making these requests into this application.
if ($this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);

return $this->sendLockoutResponse($request);
}

$credentials = $this->credentials($request);

if ($this->guard()->attempt($credentials, $request->has('remember'))) {
return $this->sendLoginResponse($request);
}

// If the login attempt was unsuccessful we will increment the number of attempts
// to login and redirect the user back to the login form. Of course, when this
// user surpasses their maximum number of attempts they will get locked out.
$this->incrementLoginAttempts($request);

return $this->sendFailedLoginResponse($request);
}

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

спросил(а) 2021-01-25T14:29:54+03:00 4 месяца, 4 недели назад
1
Решение
63

Вот как подключить пользователей вручную на 5.2:

if (/* your condition */) {
$user = User::where('email', $credentials['email'])->first();
Auth::login($user);
return $this->handleUserWasAuthenticated($request, $throttles);
}

Вот для 5.3:

if (/* your condition */) {
$user = User::where('email', $credentials['email'])->first();
Auth::login($user);
return $this->sendLoginResponse($request);
}

ответил(а) 2021-01-25T14:29:54+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема