Middleware de administración de Laravel 5 (comprobación del usuario is_admin)

¿Le gustaría tener un middleware que garantice que solo los usuarios con un estado is_admin = 1 podrán ver la sección de administración? En ese caso, puede utilizar el siguiente código:

aplicación/Http/Middleware/AdminMiddleware.php

is_admin == 1) { devolver $next($request); } devolver redirección()->invitado('/'); } }

Asegúrese de registrar el middleware como una ruta en app/Http/Kernel.php

protegido $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::clase, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::clase, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::clase, 'admin' => \App\Http\Middleware\AdminMiddleware::clase ];

Finalmente, asigne este middleware en el archivo route.php junto al middleware de autenticación, ya que el middleware de administración es una extensión del middleware de autenticación.

Aplicación/Http/routes.php

Ruta::grupo(['prefijo' => 'administración', 'middleware' => ['auth', 'admin']], función() { Ruta::get('/', 'Admin\HomeController@index'); }

Si tiene sugerencias para hacer que esta codificación sea más eficiente, siempre será bienvenido a dejar un comentario a continuación.

Pensamientos de 12 en “Laravel 5 Admin Middleware (is_admin user check)”

  1. Solo quería decir gracias por publicar esta fácil solución a este desafío :).

    ¡Que tengas un buen fin de semana!

  2. Muy útil. Me gustaría añadir un paso más importante.

    @if(\Auth::usuario()->admin==1)
    Inició sesión como administrador
    @demás
    ¡Has iniciado sesión!
    @findel

    Agregue esto en su home.blade.php para verificar si el usuario es administrador o usuario invitado.

  3. Estoy usando laravel 5.3.
    He agregado adminMiddleware en app/Http/Kernel.php.

    protegido $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::clase,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::clase,
    'enlaces' => \Illuminate\Routing\Middleware\SubstituteBindings::clase,
    'puede' => \Illuminate\Auth\Middleware\Authorize::clase,
    'invitado' => \App\Http\Middleware\RedirectIfAuthenticated::clase,
    'acelerador' => \Illuminate\Routing\Middleware\ThrottleRequests::clase,
    'admin' => \App\Http\Middleware\AdminMiddleware::clase,
    ];
    Pero no funciona.
    El mensaje de error es
    No se encontró la clase 'App\Http\Middleware\Auth'
    ¿Qué es esto?

  4. protegido $middlewareGroups = [
    'web' => [
    \Proyecto1\Http\Middleware\EncryptCookies::clase,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::clase,
    \Illuminate\Session\Middleware\StartSession::clase,
    // \Illuminate\Session\Middleware\AuthenticateSession::clase,
    \Illuminate\View\Middleware\ShareErrorsFromSession::clase,
    \Proyecto1\Http\Middleware\VerifyCsrfToken::clase,
    \Illuminate\Routing\Middleware\SubstituteBindings::clase,

    \Project1\Http\Middleware\AdminMiddleware::class, // AQUÍ DEBE AGREGAR
    ],

    'api' => [
    'acelerador:60,1',
    'enlaces',
    ],
    ];

  5. Muy útil. Me gustaría crear una vista de inicio de sesión diferente para el administrador y el usuario con la ayuda de Admin Middleware. Cuando el administrador inicia sesión en el backend, también inicia sesión automáticamente en el frontend, pero cuando el usuario del frontend intenta acceder al backend, no puede acceder al administrador. ¿Alguien puede ayudarme con este problema?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol
Ir arriba