¿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.
Solo quería decir gracias por publicar esta fácil solución a este desafío :).
¡Que tengas un buen fin de semana!
Información útil
Excelente, gracias.
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.
Índice indefinido: is_admin
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?
utilice Illuminate\Support\Facades\Auth;
Añade esto a tu middleware.
Ejecutar composer dump-autoload
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',
],
];
Gracias amigo por tu sugerencia, aprecio tu trabajo.
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?
Gracias, muy breve y contundente.