Vill du ha en mellanprogramvara som ser till att endast användare med statusen is_admin = 1 kommer att kunna se adminsektionen? Då kan du använda följande kod:
app/Http/Middleware/AdminMiddleware.php
is_admin == 1) { return $next($request); } return redirect()->guest('/'); } }
Se till att du registrerar mellanvaran som en rutt i app/Http/Kernel.php
protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Authentic:Mindware' => \App\Http\Middleware\AdminMiddleware::class ];
Tilldela slutligen denna middleware i routes.php bredvid auth-mellanvaran, eftersom admin-mellanvaran är en förlängning av auth-mellanvaran.
App/Http/routes.php
Route::group(['prefix' => 'administration', 'middleware' => ['auth', 'admin']], function() { Route::get('/', 'Admin\HomeController@index'); }
Om du har förslag för att göra denna kodning mer effektiv är du alltid välkommen att lämna en kommentar nedan.
Senast uppdaterad 11 september 2015
Ville bara säga tack för att du publicerade denna enkla lösning på denna utmaning :).
Ha en bra helg!
Användbar information
Utmärkt, tack.
Mycket användbart. Jag skulle vilja lägga till ytterligare ett viktigt steg.
@if(\Auth::user()->admin==1)
Inloggad som admin
@annan
Du är inloggad!
@endif
Lägg till detta i din home.blade.php för att kontrollera om användaren är admin eller gästanvändare.
Odefinierat index: is_admin
Jag använder laravel 5.3.
Jag har lagt till adminMiddleware i app/Http/Kernel.php.
skyddad $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
];
Men det går inte.
Felmeddelandet är
Klassen 'App\Http\Middleware\Auth' hittades inte
Vad är det här?
använd Illuminate\Support\Facades\Auth;
lägg till detta på din mellanvara.
Kör composer dump-autoload
skyddade $middlewareGroups = [
'webb' => [
\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, // HÄR MÅSTE DU LÄGA TILL
],
'api' => [
'throttle:60,1',
'bindningar',
],
];
Tack kompis, för ditt förslag, jag uppskattar ditt arbete.
Mycket användbart. Jag skulle vilja göra olika inloggningsvyer för admin och användare med hjälp av Admin Middleware. När administratören loggar in på backend loggar han också in automatiskt i frontend, men när frontend-användare försöker få åtkomst till backend kan han inte få åtkomst till admin. kan någon hjälpa mig i denna fråga?
Tack, mycket kort och kraftfullt