2013-06-05 3 views
1

Quand je lance les routes artisanales dans Laravel 4Laravel Routes Artisan

auth/login/{v1}/{v2}/{v3}/{v4}/{v5} 

Est-ce normal ou est-il quelque chose de mal. Mes itinéraires fonctionnent juste en se demandant s'il pourrait y avoir un bug ou quelque chose. Voici mes itinéraires pour auth. J'utilise des routes reposantes pour auth.

Route::controller('auth','AuthController'); 

Route::get('AuthController/login', array('as' => 'login', 'uses' => '[email protected]')); 
Route::get('auth/logout', array('as' => 'logout', 'uses' => '[email protected]')); 
Route::post('auth/login', array('uses' => '[email protected]')); 

Répondre

0

Il s'agit attendu. Lorsque vous enregistrez des contrôleurs avec Route::controller(), l'inspecteur de contrôleur adds the URI wildcards. Prenons l'exemple suivant:

Route::controller('user', 'UserController'); 

Vous pourriez alors avoir une méthode comme celui-ci sur votre UserController:

public function getProfile($username) 
{ 
    $user = User::where('username', $username)->first(); 

    return View::make('profile')->with('user', $user); 
} 

Vous pouvez ensuite frapper cette méthode en allant localhost/yourapp/user/profile/jason

Dans un coquille de noix, il vous permet de passer des paramètres supplémentaires à une méthode. Pour moi, c'est une façon très ancienne de le faire, car il semble plus agréable comme localhost/yourapp/user/jason/profile et dans ce cas, vous devez utiliser un itinéraire pour mapper à la méthode du contrôleur.

0

Je vous suggère de 2 améliorations:

1 - garder une norme avec URIs

Vous n'avez pas besoin Route :: contrôleur dans ce cas. Pour mantenir tous les itinéraires avec la même structure que je ferais:

Route::group(array('prefix'=>'auth,function(){ //make all auth routes starting by auth 
    Route::get('getLogin', array('as' => 'getLogin', 'uses' => '[email protected]')); 
    Route::get('getLogin', array('as' => 'logout', 'uses' => '[email protected]')); 
    Route::post('postLogin', array('as' => 'postLogin', 'uses' => '[email protected]')); 
}); 

Il est pas nécessaire d'utiliser un groupe, mais si vous l'application pourrait être grandit mieux. Sans code de groupe sera:

Route::get('auth/getLogin', array('as' => 'getLogin', 'uses' => '[email protected]')); 
Route::get('auth/getLogin', array('as' => 'logout', 'uses' => '[email protected]')); 
Route::post('auth/postLogin', array('as' => 'postLogin', 'uses' => '[email protected]')); 

2 - Protégez vos itinéraires post

Pour chaque poste et de mettre la demande que nous avons pour prévenir les attaques CSRF comme ceci:

Route::post('postLogin',array('before' => 'csrf','uses'=>AuthCo[email protected])); 
+0

Merci à vous deux pour l'aide. Je voulais donner les deux vérifications mais n'en permet qu'une et je ne veux pas arrêter d'utiliser Route :: controller pour enregistrer des routes reposantes. –

+0

dans ce cas, vous pouvez utiliser 'Resources' comme suit: Route :: resource ('users', 'UsersControllers'); Avec cela, vous avez tout le contrôleur reposant pour les utilisateurs. – Joss

Questions connexes