Wilt u middleware die ervoor zorgt dat alleen gebruikers met een is_admin = 1 status de admin sectie kunnen zien? Dan kunt u de volgende code gebruiken:
app/Http/Middleware/AdminMiddleware.php
is_admin == 1) { return $next($request); } return redirect()->guest('/'); } }
Zorg ervoor dat je de middleware registreert als een route in app/Http/Kernel.php
beschermd $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::klasse, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::klasse, 'gast' => \App\Http\Middleware\RedirectIfAuthenticated::klasse, 'admin' => \App\Http\Middleware\AdminMiddleware::klasse ];
Wijs deze middleware ten slotte toe in routes.php naast de auth-middleware, aangezien de admin-middleware een uitbreiding is op de auth-middleware.
App/Http/routes.php
Route::group(['prefix' => 'administratie', 'middleware' => ['auth', 'admin']], functie() { Route::get('/', 'Admin\HomeController@index'); }
Als u suggesties heeft om deze codering efficiënter te maken, kunt u hieronder een reactie achterlaten.
Ik wilde je even bedanken voor het posten van deze eenvoudige oplossing voor deze uitdaging :).
Fijn weekend!
Nuttige informatie
Uitstekend, dank u wel.
Erg nuttig. Ik wil nog een belangrijke stap toevoegen.
@if(\Auth::gebruiker()->admin==1)
Ingelogd als Admin
@anders
U bent ingelogd!
@endif
Voeg dit toe aan uw home.blade.php om te controleren of de gebruiker een beheerder of gastgebruiker is.
Ongedefinieerde index: is_admin
Ik gebruik Laravel 5.3.
Ik heb adminMiddleware toegevoegd in app/Http/Kernel.php.
beschermd $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::klasse,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::klasse,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::klasse,
'kan' => \Illuminate\Auth\Middleware\Authorize::klasse,
'gast' => \App\Http\Middleware\RedirectIfAuthenticated::klasse,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::klasse,
'admin' => \App\Http\Middleware\AdminMiddleware::klasse,
];
Maar het werkt niet.
Foutmelding is
Klasse 'App\Http\Middleware\Auth' niet gevonden
Wat is dit?
gebruik Illuminate\Support\Facades\Auth;
Voeg dit toe aan uw middleware.
Composer dump-autoload uitvoeren
beschermd $middlewareGroups = [
'web' => [
\Project1\Http\Middleware\EncryptCookies::klasse,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::klasse,
\Illuminate\Sessie\Middleware\StartSessie::klasse,
// \Illuminate\Sessie\Middleware\AuthenticateSession::klasse,
\Illuminate\View\Middleware\ShareErrorsFromSession::klasse,
\Project1\Http\Middleware\VerifyCsrfToken::klasse,
\Illuminate\Routing\Middleware\SubstituteBindings::klasse,
\Project1\Http\Middleware\AdminMiddleware::class, // HIER MOET JE TOEVOEGEN
],
'api' => [
'gas:60,1',
'bindingen',
],
];
Dank je wel, maat, voor je suggestie. Ik waardeer je werk.
Erg handig. Ik wil graag een andere login-weergave maken voor admin en gebruiker met behulp van Admin Middleware. Wanneer admin inlogt in de backend, logt hij automatisch ook in op de frontend, maar wanneer de frontend-gebruiker probeert toegang te krijgen tot de backend, kan hij geen toegang krijgen tot admin. Kan iemand mij helpen met dit probleem?
Dank u wel, heel kort en krachtig