Möchten Sie eine Middleware, die sicherstellt, dass nur Benutzer mit dem Status is_admin = 1 den Admin-Bereich sehen können? Dann können Sie den folgenden Code verwenden:
app/Http/Middleware/AdminMiddleware.php
is_admin == 1) { return $next($request); } return redirect()->guest('/'); } }
Stellen Sie sicher, dass Sie die Middleware als Route in app/Http/Kernel.php registrieren.
geschützt $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 ];
Ordnen Sie diese Middleware abschließend in der routes.php neben der Auth-Middleware zu, da die Admin-Middleware eine Erweiterung der Auth-Middleware ist.
App/Http/routes.php
Route::group(['Präfix' => 'Verwaltung', 'Middleware' => ['Authentifizierung', 'Administrator']], Funktion() { Route::get('/', 'Admin\HomeController@index'); }
Wenn Sie Vorschläge haben, um diese Codierung effizienter zu gestalten, können Sie unten jederzeit einen Kommentar hinterlassen.
Hallo Welt
Ich wollte nur Danke sagen, dass Sie diese einfache Lösung für diese Herausforderung gepostet haben :).
Habt ein schönes Wochenende!
Nützliche Informationen
Ausgezeichnet, vielen Dank.
Sehr nützlich. Ich möchte noch einen wichtigen Schritt hinzufügen.
@wenn(\Auth::user()->admin==1)
Als Administrator angemeldet
@anders
Du bist angemeldet!
@endif
Fügen Sie dies in Ihre home.blade.php ein, um zu überprüfen, ob der Benutzer ein Administrator oder Gastbenutzer ist.
Undefinierter Index: is_admin
Ich verwende Laravel 5.3.
Ich habe adminMiddleware in app/Http/Kernel.php hinzugefügt.
geschützt $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::Klasse,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'Bindungen' => \Illuminate\Routing\Middleware\SubstituteBindings::Klasse,
'kann' => \Illuminate\Auth\Middleware\Authorize::class,
'Gast' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'Throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::Klasse,
'admin' => \App\Http\Middleware\AdminMiddleware::Klasse,
];
Aber es funktioniert nicht.
Fehlermeldung ist
Klasse 'App\Http\Middleware\Auth' nicht gefunden
Was ist das?
verwenden Sie Illuminate\Support\Facades\Auth;
Fügen Sie dies Ihrer Middleware hinzu.
Führen Sie Composer Dump-Autoload aus
geschützte $middlewareGroups = [
'Netz' => [
\Projekt1\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::Klasse,
\Illuminate\Session\Middleware\StartSession::Klasse,
// \Illuminate\Session\Middleware\AuthenticateSession::Klasse,
\Illuminate\View\Middleware\ShareErrorsFromSession::Klasse,
\Projekt1\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::Klasse,
\Project1\Http\Middleware\AdminMiddleware::class, // HIER MÜSSEN SIE HINZUFÜGEN
],
'API' => [
'Drossel:60,1',
'Bindungen',
],
];
Danke, Kumpel, für deinen Vorschlag. Ich schätze deine Arbeit.
Sehr nützlich. Ich möchte mithilfe der Admin-Middleware unterschiedliche Anmeldeansichten für Administrator und Benutzer erstellen. Wenn sich der Administrator im Backend anmeldet, meldet er sich auch automatisch im Frontend an, aber wenn der Frontend-Benutzer versucht, auf das Backend zuzugreifen, kann er nicht auf den Administrator zugreifen. Kann mir jemand bei diesem Problem helfen?
Vielen Dank, sehr kurz und kraftvoll