Вход в Laravel без регистрации

#laravel #authentication

#laravel #аутентификация

Вопрос:

Можно ли войти в систему пользователя в Laravel 7, не имея пользователя в базе данных? У меня есть группа пользователей, которые я не хочу, чтобы они были в моей базе данных, потому что они используют внешний API для входа в систему, и я могу получить их данные из этого API (через XML).

Существует 3 типа пользователей:

  1. Пользователи AR-подразделения. Обычные зарегистрированные пользователи.
  2. Пользователи, не относящиеся к подразделению AR, но $user-> gca = 1. Зарегистрированные пользователи тоже.
  3. Пользователи, не являющиеся подразделением AR и не являющиеся пользователями GCA. Незарегистрированные пользователи.

Все они используют внешний API для входа в систему. Тем не менее, я регистрирую только первые 2 в своей базе данных для организационных целей.

Я намерен использовать Laravel login, используя данные пользователя 3-го типа из API, не касаясь моей базы данных.

Мой код на LoginController.php

 $user_array = json_decode(file_get_contents($this->api_url . '?type=jsonamp;token=' . $request->cookie($this->cookie_name)));

if ($user_array->result)
{
  $u = NULL;

  if ($user = User::find($user_array->vid)) $u = $user;
  else if($user_array->division == 'AR' || !is_null(Gca::find($user_array->vid)))
  {
    $u = new User();

    if(! is_null(Gca::find($user_array->vid))) $u->gca = 1;
    $u->name = $user_array->firstname;
    $u->vid = $user_array->vid;
    $vid = $u->vid;

    $u->save();

    return view('register', compact('vid'));
   }
   else
   {
    $user = new User();
    $user->division = $user_array->division;
    $user->vid = $user_array->vid;
    $user->name = $user_array->firstname;
    $user->surname = $user_array->lastname;

    Auth::login($user); //This doesn't seem to work.

    return redirect('/');
   }
}
  

Спасибо.

Комментарии:

1. поставщик пользователей по умолчанию использует базу данных и ожидает, что учетные данные для входа пользователя. я думаю, вы можете создать пользовательского поставщика пользователей: laravel.com/docs/8.x /…

2. Не могли бы вы предоставить более актуальную информацию? например route ?

3. Я отредактировал свой пост. Маршруты не имеют значения, поскольку они не используют аутентификацию напрямую.

4. Спасибо @Rabah! Вы были правы. пришлось создать пользовательского поставщика и пользовательскую защиту.