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 (''/'')}}
intente agregar al encabezado de su solicitud: Aceptar = aplicación / json postman agregar encabezado
Route::post(''login'', ''LoginController@login'')->name(''login'')
Funciona muy bien y es limpio y se explica por sí mismo.