Я получаю сообщение об ошибке Laravel при попытке очистить кеш маршрутов: невозможно подготовить маршрут login
для сериализации. Другой маршрут уже получил имя auth.login
. У меня есть два маршрута авторизации:
Route::get('login', [LoginController::class, 'showLoginForm'])->name('auth.login')->middleware('web');
Route::post('login', [AuthController::class, 'authenticate'])->name('auth.login');
Я знаю, что это ошибка, потому что есть два маршрута с одинаковым именем. Но если я удалю имя из маршрута POST, когда я перейду к URL-адресу экрана входа в систему, я получаю ошибку 405 Method not allowed. Это очень странно, потому что маршрут POST используется только тогда, когда я ввожу учетные данные и нажимаю кнопку входа в систему, а не когда я перехожу на URL-адрес экрана входа в систему. Все работает нормально с одинаковыми именами в обоих маршрутах, но это не имеет смысла.
showLoginForm
метод - это метод по умолчанию. Метод аутентификации - это настраиваемый метод:
public function authenticate(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
$user = User::where('email', $request->email)->firstOrFail();
session()->regenerate();
$user = Auth::user();
if (session('saved') == null) {
Session::put('email', $request->email);
Session::put('password', $request->password);
}
return redirect()->intended(route('home'));
}
return back()->withErrors([
'email' => 'The provided credentials do not match our records.',
]);
}