Проблема решается, когда я устанавливаю защиту по умолчанию на 'web'
(как это было раньше). Как отметил Алек в своем ответе, The API Guard does not have an attempt method
. Я думал, что api
должен быть там для вызова API. Но это необходимо, когда вы хотите авторизовать пользователя. Но до этого вы можете обрабатывать логин и регистрацию по умолчанию web
guard.
Итак, вот мои последние изменения. Контроллер:
$request->validate([
'email' => 'required',
'password' => 'required',
]);
$credentials = $request->only(['email', 'password']);
$credentials['active'] = 1;
if (Auth::attempt($credentials)) {
return response()->json([
'data' => auth()->user()
]);
}
return response()->json([
'data' => 'Wrong credential given'
]);
А вот мой файл config / auth.php
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],