Souhaitez-vous disposer d'un middleware qui garantit que seuls les utilisateurs ayant un statut is_admin = 1 pourront voir la section admin ? Vous pouvez alors utiliser le code suivant :
application/Http/Middleware/AdminMiddleware.php
is_admin == 1) { retourner $next($request); } retourner redirect()->guest('/'); } }
Assurez-vous d'enregistrer le middleware en tant que route dans app/Http/Kernel.php
protégé $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'admin' => \App\Http\Middleware\AdminMiddleware::class ];
Enfin, attribuez ce middleware dans le routes.php à côté du middleware d'authentification, puisque le middleware d'administration est une extension du middleware d'authentification.
Application/Http/routes.php
Route::group(['prefix' => 'administration', 'middleware' => ['auth', 'admin']], function() { Route::get('/', 'Admin\HomeController@index'); }
Si vous avez des suggestions pour rendre ce codage plus efficace, n'hésitez pas à laisser un commentaire ci-dessous.
Je voulais juste dire merci d'avoir publié cette solution simple à ce défi :).
Passez un bon week-end !
Informations utiles
Excellent, merci.
Très utile. J'aimerais ajouter une étape supplémentaire importante.
@if(\Auth::user()->admin==1)
Connecté en tant qu'administrateur
@autre
Vous êtes connecté!
@endif
Ajoutez ceci dans votre home.blade.php pour vérifier si l'utilisateur est un administrateur ou un utilisateur invité.
Index indéfini : is_admin
J'utilise laravel 5.3.
J'ai ajouté adminMiddleware dans app/Http/Kernel.php.
protégé $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'liaisons' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'peut' => \Illuminate\Auth\Middleware\Authorize::class,
'invité' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
];
Mais ça ne marche pas.
Le message d'erreur est
Classe « App\Http\Middleware\Auth » non trouvée
Qu'est-ce que c'est?
utilisez Illuminate\Support\Facades\Auth ;
ajoutez ceci à votre middleware.
Exécutez composer dump-autoload
protégé $middlewareGroups = [
'web' => [
\Project1\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\Project1\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Project1\Http\Middleware\AdminMiddleware::class, // ICI VOUS DEVEZ AJOUTER
],
'api' => [
'accélérateur:60,1',
'reliures',
],
];
Merci, mon pote, pour ta suggestion, j'apprécie ton travail.
Très utile. Je voudrais créer une vue de connexion différente pour l'administrateur et l'utilisateur avec l'aide d'Admin Middleware. Lorsque l'administrateur se connecte au backend, il se connecte également automatiquement au frontend, mais lorsque l'utilisateur du frontend essaie d'accéder au backend, il ne peut pas accéder à l'administrateur. Quelqu'un peut-il m'aider sur ce problème ?
Merci, très brièvement et puissamment