Ruta no definida

Tratando de jugar con Laravel hoy por primera vez. Recibo el siguiente error cuando bash visitar localhost / project / public:

InvalidArgumentException
Ruta [login] no definida.

app / route.php:

<?php Route::get('/', 'HomeController@redirect'); Route::get('login', 'LoginController@show'); Route::post('login', 'LoginController@do'); Route::get('dashboard', 'DashboardController@show'); 

app / controllers / HomeController.php:

 <?php class HomeController extends Controller { public function redirect() { if (Auth::check()) return Redirect::route('dashboard'); return Redirect::route('login'); } } 

app / controllers / LoginContoller.php:

 <?php class LoginController extends Controller { public function show() { if (Auth::check()) return Redirect::route('dashboard'); return View::make('login'); } public function do() { // do login } } 

app / controllers / DashboardController.php:

 <?php class DashboardController extends Controller { public function show() { if (Auth::guest()) return Redirect::route('login'); return View::make('dashboard'); } } 

¿Por qué estoy recibiendo este error?

Está intentando redirigir a una ruta con nombre cuyo nombre es login , pero no tiene rutas con ese nombre:

 Route::post('login', [ 'as' => 'login', 'uses' => 'LoginController@do']); 

La parte 'as' del segundo parámetro define el nombre de la ruta. El primer parámetro de cadena define su ruta .

En la aplicación \ Excepciones \ Handler.php

 protected function unauthenticated($request, AuthenticationException $exception) { if ($request->expectsJson()) { return response()->json(['error' => 'Unauthenticated.'], 401); } return redirect()->guest(route('auth.login')); } 

Laravel ha introducido rutas nombradas en Laravel 4.2.

¿QUÉ ES NOMBRADO RUTAS?

Rutas con nombre le permite dar nombres a la ruta de su enrutador. Por lo tanto usando el nombre podemos llamar a las rutas en el archivo requerido.


¿CÓMO CREAR RUTAS NOMBRADAS?

Rutas con nombre creadas de dos maneras diferentes: como y nombre ()

MÉTODO 1:

 Route::get('about',array('as'=>'about-as',function() { return view('about'); } )); 

MÉTODO 2:

  Route::get('about',function() { return view('about'); })->name('about-as'); 

¿Cómo usamos en las vistas?

 about-as 

Por lo tanto, laravel ‘middleware’ => ‘auth’ ya se ha predefinido para redirigir como página de inicio de sesión si el usuario aún no ha iniciado sesión. Por lo tanto, debemos usarlo como palabra clave

  Route::get('login',array('as'=>'login',function(){ return view('login'); })); 

Debe agregar la siguiente línea a su archivo de rutas web.php:

 Auth::routes(); 

En caso de que tenga rutas de autenticación personalizadas, asegúrese de que la ruta de inicio de sesión tenga ‘como’ => ‘inicio de sesión’

En caso de API, o digamos al implementar JWT. El middleware JWT lanza esta excepción cuando no pudo encontrar el token e intentará redirigir a la ruta de inicio de sesión. Como no pudo encontrar ningún registro en la ruta especificada, se produce esta excepción. Puede cambiar la ruta en “app \ Exceptions \ Handler.php”

use Illuminate \ Auth \ AuthenticationException;

 protected function unauthenticated($request, AuthenticationException $exception){ return $request->expectsJson() ? response()->json(['message' => $exception->getMessage()], 401) : redirect()->guest(route('ROUTENAME')); } 

Pruebe este método:

busca este archivo

“RedirectifAuthenticated.php”

actualiza lo siguiente como prefieras

  if (Auth::guard($guard)->check()) { return redirect('/'); } 

$ guard como un argumento tomará el nombre del guardia personalizado que ha establecido, por ejemplo. “admin” entonces debería ser así.

 if (Auth::guard('admin')->check()) { return redirect('/admin/dashboard'); }else{ return redirect('/admin/login'); } 

Me encontré con este error recientemente después de usar el enrutamiento de autenticación integrado de Laravel usando php artisan make:auth . Cuando ejecuta ese comando, estas nuevas rutas se agregan a su archivo web.php:

 Auth::routes(); Route::get('/home', 'HomeController@index')->name('home'); 

Debo haber borrado accidentalmente estas rutas. Ejecutar php artisan make:auth nuevamente restauró las rutas y resolvió el problema. Estoy corriendo Laravel 5.5.28.

Reemplazar en sus vistas (archivos blade) todos

{{ ruta (‘/’)}} —– por —-> {{ url (‘/’)}}

 Route::post('login', 'LoginController@login')->name('login') 

Funciona muy bien y es limpio y se explica por sí mismo.

intente agregar en el encabezado de su solicitud: Aceptar = aplicación / json postman agregar encabezado

Llego tarde a la fiesta. Si su expectativa es algún tipo de json devuelto además de ser redirigido, edite el controlador de excepciones para que haga eso.

Vaya a ir a App\Exceptions\Handler.php Luego edite este código:

 public function render($request, Exception $exception) { return parent::render($request, $exception); } 

a

 public function render($request, Exception $exception) { return response()->json( [ 'errors' => [ 'status' => 401, 'message' => 'Unauthenticated', ] ], 401 ); } 

Si alguien obtiene esto de un cliente de descanso (por ejemplo, Postman): debe configurar el encabezado para que acepte application / json.

Para hacer esto en el cartero, haga clic en la pestaña Encabezados, agregue una nueva clave ‘Aceptar’ y escriba el valor ‘aceptar / json’.