148 votes

laravel 5.3 new Auth::routes()

Récemment, j'ai commencé à utiliser Laravel 5.3 pour écrire un blog, mais j'ai une question après l'avoir exécuté. php artisan make:auth

quand je l'exécute, cela génère des routes dans mon web.php

Voici le code qu'il contient :

Auth::routes();

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

Ensuite, je cours php artisan route:list Je trouve beaucoup d'actions, comme LoginController@login...

Mais je n'ai pas trouvé ces actions dans mon App\Http\Controllers\Auth Où sont-elles ?

Et aussi, quel est le Auth::routes() Je n'arrive pas à trouver les routes concernant Auth.

J'ai besoin de l'aide de quelqu'un, merci de répondre à ma question.

20 votes

Suis-je le seul à détester maintenant toutes ces magies de Laravel ?

2 votes

Je n'ai rien contre les magies de Laravel, si seulement elles étaient documentées... et fonctionnaient de manière cohérente sans avoir à faire le tour du serveur en chantant php artisan...quoi ?

0 votes

Tout ce que Laravel n'est pas pour les développeurs, c'est pour les entreprises et les utilisateurs novices qui veulent mettre en place de nouvelles applications rapidement et facilement, même leur documentation. Je préférerais toujours Codeigniter si j'avais le choix.

241voto

Lee Points 1664

Auth::routes() est juste une classe d'aide qui vous permet de générer toutes les routes requises pour l'authentification des utilisateurs. Vous pouvez parcourir le code ici https://github.com/laravel/framework/blob/5.3/src/Illuminate/Routing/Router.php à la place.

Voici les itinéraires

// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');

// Registration Routes...
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');

// Password Reset Routes...
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');

3 votes

Merci. Je vois le fichier ../Routing/Router.php et maintenant je sais comment les routes fonctionnent, mais où est la méthode statique Auth routes() ? Je ne la trouve toujours pas, pardonnez-moi, je suis un débutant de Laravel...

5 votes

La méthode Auth::routes est ici github.com/laravel/framework/blob/5.3/src/Illuminate/Support/ et il appelle la fonction Router de toute façon. Veuillez marquer cet article comme réponse si cela vous a aidé, merci.

3 votes

Auth est un façade et seront définis dans config/app.php Vous trouverez la classe qui lui sert de fournisseur dans ce fichier de configuration.

73voto

RedGlobe Points 195

Voici Laravel 5.7 , Laravel 5.8 , Laravel 6.0 , Laravel 7.0 et Laravel 8.0 (notez un changement mineur de bc dans 6.0 à la route de vérification de l'email).

// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

// Registration Routes...
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'Auth\RegisterController@register');

// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update');

// Confirm Password (added in v6.2)
Route::get('password/confirm', 'Auth\ConfirmPasswordController@showConfirmForm')->name('password.confirm');
Route::post('password/confirm', 'Auth\ConfirmPasswordController@confirm');

// Email Verification Routes...
Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}/{hash}', 'Auth\VerificationController@verify')->name('verification.verify'); // v6.x
/* Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify'); // v5.x */
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');

Vous pouvez vérifier ces itinéraires ici :

1 votes

Il y a effectivement eu un petit changement de 5.8 à 6.x comme le montrent vos liens : La route pour le lien de vérification de l'email devrait être 'email/verify/{id}/{hash}' . Sinon, le hachage ne peut pas être vérifié et une erreur 403 sera envoyée, indiquant que "cette action n'est pas autorisée".

47voto

Walter Pozzguo Points 451

Auth routes pour Laravel 5.3 au lieu de Auth::routes(). J'espère que cela vous aidera...

Route::group(['middleware' => ['web']], function() {

// Login Routes...
    Route::get('login', ['as' => 'login', 'uses' => 'Auth\LoginController@showLoginForm']);
    Route::post('login', ['as' => 'login.post', 'uses' => 'Auth\LoginController@login']);
    Route::post('logout', ['as' => 'logout', 'uses' => 'Auth\LoginController@logout']);

// Registration Routes...
    Route::get('register', ['as' => 'register', 'uses' => 'Auth\RegisterController@showRegistrationForm']);
    Route::post('register', ['as' => 'register.post', 'uses' => 'Auth\RegisterController@register']);

// Password Reset Routes...
    Route::get('password/reset', ['as' => 'password.reset', 'uses' => 'Auth\ForgotPasswordController@showLinkRequestForm']);
    Route::post('password/email', ['as' => 'password.email', 'uses' => 'Auth\ForgotPasswordController@sendResetLinkEmail']);
    Route::get('password/reset/{token}', ['as' => 'password.reset.token', 'uses' => 'Auth\ResetPasswordController@showResetForm']);
    Route::post('password/reset', ['as' => 'password.reset.post', 'uses' => 'Auth\ResetPasswordController@reset']);
});

Donc, si vous changez certains noms de ces itinéraires, n'oubliez pas de changer aussi dans les vues les actions des postes !

0 votes

Merci mais vous n'avez pas besoin de 'middleware' => ['web'] car : le groupe middleware web est automatiquement appliqué à votre fichier routes/web.php par le RouteServiceProvider.

0 votes

@panjeh cela semble être vrai pour la principale routes/web.php fichier. Cependant, pour tout fichier de ce type dans un répertoire de fournisseur (c'est-à-dire si vous essayez de déplacer les éléments d'authentification dans un paquet), vous devez ajouter le middleware web vous-même.

15voto

Ferid Mövsümov Points 1903

Para Laravel 5.5.x

// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');

// Registration Routes...
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');

// Password Reset Routes...
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');

8voto

maxagaz Points 409

Cela a fonctionné pour moi avec Laravel 5.6 .

Dans le fichier web.php il suffit de le remplacer :

Auth::routes();

Par :

//Auth::routes();
// Authentication Routes...
Route::get('admin/login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('admin/login', 'Auth\LoginController@login');
Route::post('admin/logout', 'Auth\LoginController@logout')->name('logout');
// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');

Et retirez le Registre dans les deux fichiers ci-dessous :

welcome.blade.php
layouts/app.blade.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X