tutorial nova espaƱol ejemplos php laravel

php - nova - Ruta[login] no definida



laravel nova (10)

Tratando de jugar con Laravel hoy por primera vez. Recibo el siguiente error cuando intento 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?


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'')); }


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'')); }


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 .


Laravel ha introducido rutas nombradas en Laravel 4.2.

¿QUÉ ES NOMBRADO RUTAS?

Rutas con nombre le permite asignar 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?

<a href="{{ URL::route("about-as") }}">about-as</a>

Por lo tanto, laravel ''middleware'' => ''auth'' ya se ha predefinido para redireccionar como página de inicio de sesión si el usuario aún no ha iniciado sesión.

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


Me encontré con este error recientemente después de usar el enrutamiento de autenticación incorporado 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.


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''); }


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.