J'utilise Laravel (v5).
J'ai besoin d'un utilisateur et je l'ai déjà enregistré. Maintenant, je veux désactiver l'enregistrement pour les nouveaux utilisateurs. Bien sûr, j'ai besoin du formulaire de connexion pour fonctionner.
Comment puis je faire ça?
routes.php
. Pour activer les fonctions d'authentification, il vous suffit d'ajouterRoute::auth();
au fichier.Route::auth()
raccourci ne soit préconisé.Auth::routes(['register' => false]);
dans web.phpRéponses:
Laravel 5.7 a introduit les fonctionnalités suivantes:
Les options actuellement possibles ici sont:
Pour les anciennes versions de Laravel, il suffit de remplacer
showRegistrationForm()
et deregister()
méthodes dansAuthController
pour Laravel 5.0 - 5.4Auth/RegisterController.php
pour Laravel 5.5la source
abort(404)
lefunction register()
Auth/RegisterController.php
showRegistrationForm()
fonction est dans levendor
dossier, techniquement, il n'est pas recommandé de modifier les fichiers dans le dossier du fournisseur. Fondamentalement, ce que je recommande est de supprimer la route de registreweb.php
. Vous pouvez simplement direAuth::routes(['register' => false])
dans leweb.php
fichier. À votre santé!Si vous utilisez Laravel 5.2 et que vous avez installé la fonctionnalité relative à l'authentification avec,
php artisan make:auth
votreapp/Http/routes.php
fichier comprendra toutes les routes liées à l'authentification en appelant simplementRoute::auth()
.La méthode auth () se trouve dans
vendor/laravel/framework/src/Illuminate/Routing/Router.php
. Donc, si vous voulez faire ce que certaines personnes suggèrent ici et désactiver l'enregistrement en supprimant les routes indésirables (probablement une bonne idée), vous devez copier les routes que vous voulez toujours de la méthode auth () et les mettreapp/Http/routes.php
(en remplaçant l'appel à Route :: auth ()). Donc par exemple:Si vous utilisez une version inférieure à 5.2, alors c'est probablement différent, je me souviens que les choses ont beaucoup changé depuis la version 5.0, à un moment donné, il
artisan make:auth
a même été supprimé IIRC.la source
Route::group(['middleware' => 'auth'], function () { Route::get('register', 'Auth\AuthController@showRegistrationForm'); Route::post('register', 'Auth\AuthController@register'); });
, mais lorsque l'utilisateur connecté demande,/register
il est redirigé vers/
App\Http\Middleware\RedirectIfAuthenticated
. Et ce middleware vous redirige vers/
si vous êtes déjà connecté. Ce qui est logique, pourquoi voudriez-vous vous inscrire si vous êtes connecté? :-) Si vous souhaitez autoriser uniquement certaines routes à certains types d'utilisateurs, vous devrez créer votre propre middleware au lieu de['middleware' => 'auth']
Cela peut être nouveau dans la version 5.7, mais il existe maintenant un tableau d'options pour la méthode auth. Changer simplement
à
dans votre fichier de routes après l'exécution
php artisan make:auth
désactivera l'enregistrement des utilisateurs.la source
Pour Laravel 5.3 et 5.4, voici la bonne façon de le faire:
Vous devez changer:
à
dans app / Http / Controller / Auth / RegisterController.php
la source
Depuis Laravel 5.7, vous pouvez passer un éventail d'options à
Auth::routes()
. Vous pouvez ensuite désactiver les routes de registre avec:Vous pouvez voir comment cela fonctionne à partir du code source: src / Illuminate / Routing / Router.php .
la source
Méthode 1 pour la version 5.3
Dans laravel 5.3, vous n'avez pas AuthController. pour désactiver la route de registre, vous devez changer de constructeur
RegisterController
comme ceci:Vous pouvez changer de formulaire:
à:
Remarque: pour l'utilisation,
Redirect
n'oubliez pas deuser Redirect;
Donc l'accès utilisateur à https: // nom_hôte / register est redirigé vers "/".Méthode 2 pour la version 5.3
Lorsque nous utilisons,
php artisan make:auth
il est ajoutéAuth::route();
automatiquement. Veuillez remplacer la route dans /routes/web.php. Vous pouvez changer c'est comme ceci: * vous devez commenter cette ligne:Auth::routes();
Merci! J'espère que cela pourra résoudre vos problèmes.
la source
$this->middleware('auth');
- fonctionne!L'écrasement de getRegister et postRegister est délicat - si vous utilisez git, il y a une forte possibilité qui
.gitignore
est configuré pour ignorer les fichiers du framework, ce qui conduira au résultat que l'enregistrement sera toujours possible dans votre environnement de production (si laravel est installé via composer par exemple )Une autre possibilité consiste à utiliser routes.php et à ajouter cette ligne:
De cette façon, les fichiers du framework sont laissés seuls et toute demande sera toujours redirigée hors du module de registre Frameworks.
la source
Le
AuthController.php
@limonte a remplacé est dansApp\Http\Controllers\Auth
, pas dans le répertoire du fournisseur, donc Git n'ignore pas ce changement.J'ai ajouté ces fonctions:
et cela fonctionne correctement.
la source
LAravel 5.6
la source
Voici ma solution à partir de 5.4:
Remarquez que j'ai commenté
Auth::routes()
et les deux itinéraires d'inscription.Important: vous devez également vous assurer de supprimer toutes les instances de
route('register')
dans votreapp.blade
mise en page, sinon Laravel générera une erreur.la source
La méthode suivante fonctionne très bien:
Copiez tous les itinéraires
/vendor/laravel/framework/src/Illuminate/Routing/Router.php
et collez-les dansweb.php
et commentez ou supprimezAuth::routes()
.Ensuite, configurez une condition pour activer et désactiver l'enregistrement à partir de .env. Dupliquez le
503.blade.php
fichierviews/errors
et créez un 403 interdit ou ce que vous voulez.Ajoutez
ALLOW_USER_REGISTRATION=
à .env et contrôlez l'inscription des utilisateurs en définissant sa valeur sur true ou false.Vous avez maintenant un contrôle total des itinéraires et les fichiers des fournisseurs restent intacts.
web.php
Ceci est une combinaison de quelques réponses précédentes notamment Rafal G. et Daniel Centore.
la source
Sur laravel 5.6 et au-dessus, vous pouvez éditer dans le fichier web.php
Et tu peux le rendre vrai si tu changes d'avis, je vois les choses facilement de cette façon
la source
Dans
routes.php
, ajoutez simplement ce qui suit:Ensuite, vous pouvez contrôler sélectivement si l'enregistrement est autorisé ou non dans votre
.env
fichier.la source
J'ai dû utiliser:
L'utilisation de Redirect :: to () m'a donné une erreur:
la source
Dans Laravel 5.4
Vous pouvez trouver toutes les routes enregistrées
Auth::routes()
dans la classe\Illuminate\Routing\Router
dans la méthodeauth()
cela ressemble à ceci:
Copiez simplement les itinéraires que vous voulez / dont vous avez besoin et tout va bien!
la source
Dans laravel 5.3, vous devez remplacer la valeur
showRegistrationForm()
par défaut en incluant le code ci-dessous dans leRegisterController.php
fichier dansapp\Http\Controllers\Auth
puisque vous ne voulez pas autoriser l'enregistrement, il est préférable de simplement lancer
404 error
pour que l'intrus sache qu'il est perdu. Et lorsque vous êtes prêt pour l'enregistrement dans votre application, décommentez//return view('auth.register');
puis commentezabort(404);
\\\\\\\\\\\\\\\\\\\ JUST UN FYI /////////////////////////// ////
Si vous devez utiliser plusieurs authentifications telles que créer une authentification pour les utilisateurs, les membres, les étudiants, les administrateurs, etc., je vous conseille de vérifier ce hesto / multi-auth, c'est un package génial pour des autorisations illimitées dans les applications L5.
Vous pouvez en savoir plus sur la méthodologie Auth et son fichier associé dans cet article.
la source
Dans Laravel 5.5
J'essayais d'accomplir le même problème dans Laravel 5.5. Au lieu d'utiliser
Auth::routes()
dans le fichier de routes web.php, je n'ai inclus que les routes de connexion / déconnexion:la source
Cela a été mentionné dans les commentaires précédents, mais je voudrais préciser qu'il existe plusieurs façons d'accéder aux routes d'authentification dans votre fichier web.php dans Laravel ^ 5.7. selon votre version, cela peut sembler un peu différent mais ils obtiennent le même résultat.
Première option
Deuxième option
la source
la source
Afin de ne pas trop changer le code tel qu'il est, créez simplement un middleware pour détecter si l'url de la requête est url ('register'), puis redirigez vers 404 ou faites n'importe où.
la source
Dans Laravel 5.5
Travailler sur un problème similaire et définir l'argument middleware d'invité à «auth» semblait être une solution plus élégante.
Modifier le fichier: app-> http-> Controller-> Auth-> RegisterController.php
Je peux me tromper cependant ... mais cela semble plus simple que de modifier le routage avec plus de lignes et moins de merde que de simplement rediriger la page ... du moins dans ce cas, vouloir verrouiller l'enregistrement pour les invités.
la source
guest
middleware est responsable de la redirection d'un utilisateur déjà connecté à partir d'une page à laquelle seul un invité peut accéder (c'est-à-dire une/register
page)Je suppose que ce serait plutôt une meilleure solution.
Remplacez les méthodes suivantes comme indiqué ci-dessous dans
App \ Http \ Controller \ Auth \ RegisterController.php
la source
Dans Laravel 5.5, c'est très simple, si vous utilisez le système d'itinéraire CRUD.
Allez à
app/http/controllers/RegisterController
il y a un espace de noms:Illuminate\Foundation\Auth\RegistersUser
Vous devez vous rendre dans RegistersUser:
Illuminate\Foundation\Auth\RegistersUser
Il y a le
showRegistrationForm
changement d' appel de méthode ceci:return view('auth.login');
pour ceci:return redirect()->route('auth.login');
et retirer de votre registre d'appel d'itinéraire de page de lame. Cela peut ressembler à ça:la source
J'ai trouvé que c'était la solution la plus simple dans laravel 5.6! Il redirige toute personne qui tente d'accéder à yoursite.com/register vers yoursite.com
routes / web.php
la source
Tout ce que j'ai fait a été de remplacer le code de lame de registre par le code de lame de connexion. De cette façon, le registre va toujours à la connexion.
resources/views/auth/register.blade.php
est remplacé parresources/views/auth/login.blade.php
la source
Pour Laravel 5.6+, collez les méthodes ci-dessous dans
app\Http\Controller\Auth\RegisterController
Maintenant
RegistersUser
, vous remplacez ces méthodes dans le trait, chaque fois que vous changez d'avis, supprimez ces méthodes. Vous pouvez également commenter les liens de registrewelcome.blade.php
et leslogin.blade.php
vues.la source
ajouter
en haut du fichier
la source