web-dev-qa-db-fra.com

Route [login] non définie

Essayer de jouer avec Laravel aujourd'hui pour la première fois. Je reçois le message d'erreur suivant lorsque je tente de visiter localhost/project/public:

InvalidArgumentException
Route [connexion] non définie.

app/routes.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');
    }

}

Pourquoi est-ce que je reçois cette erreur?

31
inkd

Vous essayez de rediriger vers un nom de la route dont le nom est login, mais vous n'avez aucun itinéraire portant ce nom:

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

La partie 'as' du deuxième paramètre définit le nom de la route. Le premier paramètre de chaîne définit sa route.

53
Jeff Lambert

Dans l'application\Exceptions\Handler.php

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

    return redirect()->guest(route('auth.login'));
}
30
aisthetes

Laravel a introduit Routes nommées dans Laravel 4.2.

QUOI IS ITINÉRAIRES NOMMÉS? 

_ {Les itinéraires nommés vous permettent de donner des noms à votre chemin de routeur. Par conséquent, en utilisant le nom, nous pouvons appeler les itinéraires dans le fichier requis.


COMMENT CRÉER DES ITINÉRAIRES NOMMÉS?

Itinéraires nommés créés de deux manières différentes: as et name ()

METHODE 1:

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

METHODE 2:

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

Comment utilisons-nous dans les vues?

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

Par conséquent, laravel 'middleware' => 'auth' a déjà été prédéfini pour être redirigé en tant que page de connexion si l'utilisateur ne s'est pas encore connecté. Par conséquent, nous devrions utiliser le mot clé as.

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

Vous devez ajouter la ligne suivante à votre fichier de routes web.php:

Auth::routes();

Si vous avez des routes d'authentification personnalisées, assurez-vous que vous/route de connexion a 'en tant que' => 'login'

8
Dibyendu Mitra Roy

Dans le cas d'une API, ou disons lors de l'implémentation de JWT. Le middleware JWT lève cette exception lorsqu'il ne parvient pas à trouver le jeton et tente de rediriger le journal sur la route en cours . route dans "app\Exceptions\Handler.php"

utilisez Illuminate\Auth\AuthenticationException;

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

Essayez cette méthode: 

cherche ce fichier 

"RedirectifAuthenticated.php"

mettre à jour ce qui suit comme vous préférez

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

$ guard en tant qu'argument prendra le nom du garde personnalisé que vous avez défini, par exemple. "admin" alors ça devrait être comme ça.

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

J'ai récemment rencontré cette erreur après avoir utilisé le routage d'authentification intégré de Laravel à l'aide de php artisan make:auth. Lorsque vous exécutez cette commande, ces nouveaux itinéraires sont ajoutés à votre fichier web.php:

Auth::routes();

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

Je dois avoir accidentellement supprimé ces itinéraires. Lancer à nouveau php artisan make:auth a restauré les itinéraires et résolu le problème. Je cours Laravel 5.5.28.

2
clone45

Remplacer dans vos vues (fichiers de lame) tous 

{{ route ('/')}} ----- par ----> {{ url ('/')}}

1
Rubén Ruíz

Si quelqu'un reçoit cela d'un client de repos (ex. Postman) - Vous devez définir l'en-tête sur Accepter application/json. 

Pour ce faire sur postman, cliquez sur l'onglet En-têtes, ajoutez une nouvelle clé "Accepter" et tapez la valeur "accepter/json".

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

fonctionne très bien et il est propre et explicite 

0
Denise Ignatova

Je suis en retard à la fête. si votre attente est une sorte de JSON renvoyé autrement que d'être redirigé, éditez le gestionnaire d'exceptions alors faites-le.

Allez à App\Exceptions\Handler.php.__, puis éditez ce code:

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

à

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

essayez d’ajouter à l’en-tête de votre demande: Accepter = application/json postman add header

0
jhon chacolla