J'essaie de désactiver la route d'enregistrement dans mon application qui fonctionne avec Laravel 5.4.
Dans mon fichier de routes, je n'ai que le
Auth::routes();
Existe-t-il un moyen de désactiver les routes de registre ?
J'essaie de désactiver la route d'enregistrement dans mon application qui fonctionne avec Laravel 5.4.
Dans mon fichier de routes, je n'ai que le
Auth::routes();
Existe-t-il un moyen de désactiver les routes de registre ?
El code
:
Auth::routes();
c'est un raccourci pour cette collection de routes :
// 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');
Vous pouvez donc remplacer la première par la liste des routes et mettre en commentaire les routes que vous ne voulez pas utiliser dans votre application.
Editer pour laravel version => 5.7
Dans les versions plus récentes, vous pouvez ajouter un paramètre à la commande Auth::routes()
pour désactiver les routes de registre :
Auth::routes(['register' => false]);
Les routes de vérification des emails ont été ajoutées :
Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify');
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');
BTW vous pouvez également désactiver Password Reset
y Email Verification
routes :
Auth::routes(['reset' => false, 'verify' => false]);
@Haritsinh. La question portait sur la version de Laravel 5.4 . Sur 5.4 la version Auth::routes()
n'accepte pas d'argument, cela n'a été introduit que dans des versions plus récentes.
Ok, tu as raison mon ami, Auth::routes()
supporte l'argument après laravel 5.7 mais vous pouvez aussi faire comme ceci dans la version laravel < 5.7 Route::redirect('register', 'login', 301);
ce qui semble plus simple que ci-dessus, n'est-ce pas ?
Depuis Laravel 5.7, une nouvelle fonction $options
est introduit dans le Auth::routes()
à travers laquelle vous pouvez passer un tableau pour contrôler la génération de la méthode requis les routes pour l'authentification de l'utilisateur (les entrées valides peuvent être choisies parmi les 'register'
, 'reset'
ou 'verify'
chaînes de caractères).
Auth::routes(['register' => false]);
L'autre option consiste à ajouter des routes de vérification des e-mails, qui sont désactivées par défaut. Auth::routes(['verify' => true]);
Cela devrait être la réponse car c'est la meilleure façon de procéder si vous voulez seulement désactiver la route d'enregistrement sans vouloir modifier les autres routes d'authentification par défaut.
C'est faussement facile ! Il vous suffit de remplacer deux méthodes dans votre fichier app/Http/Controllers/Auth/RegisterController.php
Classe. Voir ci-dessous qui empêchera l'affichage du formulaire et surtout bloquera les requêtes POST directes vers votre application pour les inscriptions .
/**
* Show the application registration form.
*
* @return \Illuminate\Http\Response
*/
public function showRegistrationForm()
{
return redirect('login');
}
/**
* Handle a registration request for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function register(Request $request)
{
abort(404);
}
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.
4 votes
Dans la version actuelle de Laravel 5.7.5, il y a une option pour cela.
Auth::routes(['register' => false]);
0 votes
Voir github.com/laravel/framework/blob/5.7/src/Illuminate/Routing/