Vorresti avere un middleware che assicuri che solo gli utenti con stato is_admin = 1 possano vedere la sezione admin? Allora puoi usare il seguente codice:
app/Http/Middleware/AdminMiddleware.php
is_admin == 1) { restituisci $next($request); } restituisci redirect()->guest('/'); } }
Assicurati di registrare il middleware come percorso in app/Http/Kernel.php
protetto $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 ];
Infine, assegnare questo middleware nel file routes.php accanto al middleware di autenticazione, poiché il middleware di amministrazione è un'estensione del middleware di autenticazione.
App/Http/routes.php
Route::group(['prefix' => 'amministrazione', 'middleware' => ['auth', 'admin']], function() { Route::get('/', 'Admin\HomeController@index'); }
Se avete suggerimenti per rendere questa codifica più efficiente, siete sempre benvenuti a lasciare un commento qui sotto.
Volevo solo ringraziarti per aver pubblicato questa semplice soluzione a questa sfida :).
Buon fine settimana!
Informazioni utili
Ottimo, grazie.
Molto utile. Vorrei aggiungere un altro passaggio importante.
@if(\Auth::user()->admin==1)
Accedi come amministratore
@altro
Hai effettuato l'accesso!
@endif
Aggiungilo nel tuo file home.blade.php per verificare se l'utente è amministratore o ospite.
Indice non definito: is_admin
Sto utilizzando Laravel 5.3.
Ho aggiunto adminMiddleware in app/Http/Kernel.php.
protetto $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'legami' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'può' => \Illuminate\Auth\Middleware\Authorize::class,
'ospite' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'acceleratore' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
];
Ma non funziona.
Il messaggio di errore è
Classe 'App\Http\Middleware\Auth' non trovata
Cos'è questo?
utilizzare Illuminate\Support\Facades\Auth;
aggiungilo al tuo middleware.
Esegui il dump-autoload del compositore
protetti $middlewareGroups = [
'ragnatela' => [
\Project1\Http\Middleware\EncryptCookies::classe,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\Progetto1\Http\Middleware\VerifyCsrfToken::classe,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Project1\Http\Middleware\AdminMiddleware::class, // QUI DEVI AGGIUNGERE
],
'api' => [
'acceleratore:60,1',
'legami',
],
];
Grazie amico, apprezzo il tuo suggerimento.
Molto utile. Vorrei creare una vista di accesso diversa per admin e user con l'aiuto di Admin Middleware. Quando l'admin accede al backend, allora accede automaticamente anche al frontend, ma quando l'utente del frontend prova ad accedere al backend, allora non riesce ad accedere all'admin. Qualcuno può aiutarmi con questo problema?
Grazie, molto brevemente e potente