21 - Curso de Laravel 5.1, Middleware
HTML-код
- Опубликовано: 29 июн 2024
- Código del Proyecto:
adf.ly/1Oq3jP
API Laravel: laravel.com/api/5.0/Illuminate...
Laravel: laravel.com/docs/5.1/middleware
Twitter: / zraulpalacios
Google+ : plus.google.com/1157935225848...
Instagram: / raul_palacioz - Наука
En Laravel 5.4 tambien tienes que ir a la ruta: /app/Exceptions/Handler.php y modificar quedando de esta manera:
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
return redirect()->guest('/');
}
Gracias por los videos Raul (Y)
Estoy con la version 5.5 y el auth no me redirecciona
reviso el Handler.php y al agregar lo que comentaste tampoco
Hola, ando en las mismas, haz podido hacer algo? Gracias.
Estoy con la version 5.5. y si funciona asi, pero modificando el archivo: vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php
No se si te sirva aun , pero debes agregar la siguiente linea 'use Illuminate\Auth\AuthenticationException; ' al principio donde colocas los USE
muy buenos tutoriales, y buena idea lo de github, es muy util para ver que es lo que se nos pasó en el codigo.
claro ese es el objetivo, que bien que te ayude, saludos
Muy bueno, amigo! Te agradeço de coração!
no hay por que, saludos :D
Hola que tal Raul, buenisimos tus videos! Una duda, en el middleware de Admin, en lugar de usar el facade de Guard, no se puede usar el facade de Auth? es decir hacerlo simplemente asi: if(Auth::user()->id != 1) {} ? Asi tambien se puede obtener la informacion del usuario que esta actualmente loggeado que no? O cual es la diferencia? Saludos!
Gracias por compartir tus conocimientos. excelente curso. una duda, me acabo de dar cuenta que recomendaste nunca eliminar un recurso de la base de datos y en videos anteriores cambiaste el metodo destroy por delete que lo que hace es practicamente ocultar un usuario, pero a estas alturas del curso probando el middleware que me funciono perfectamente es que se me da por verificar dos puntos.
1. Si el usuario que supuestamente elimino su cuenta desea registrarse nuevamente me dice que el email ya se encuentra registrado.
2. Si el usuario asi haya eliminado su cuenta hace un login entra en el panel de admin. aparece el nombre del usuario como si estuviera registrado, claro sin privilegios por la validacion del middleware que se aplico que debe tener id 1.
algún consejo de como corregir estos dos punto. una opción seria que el usuario reactive su cuenta pero que valor deberia tomar la columna deleted_at?, imagino que null xq es el valor que tiene el en los usuarios que no han eliminado su cuenta, pero no se si estoy en lo correcto
Amigo excelente explicación !!!
+Frank Steven Tovar Sanchez Que bien que te ayuden amigo, saludos
Lo haces ver todo muy fácil :)
Julio Edgar Mejia Rojas Mientas nos guste hacer lo que hacemos Todo es facil :D, saludos
En el caso de los permisos, no se podría crear una columna en la tabla usuarios, y con base a un identificador {1, 2, 3, n, ... , n} detrminar los permisos que este usuario puede tener. Por que designar al id 1 como administrador es muy limitativo no?
Oie en laravel 5.3 ya no existe el beforeFilter asi que por lo tanto no tengo el constructor, debo de copiar el $this->middleware('admin'); a casa una de mis funciones?
Hola amigo! Oye ¿cual es la diferencia entre middleware, gate y policies?. Me confundo mucho entre middleware y gate.. por fa.. saludos y exito!
Muy bueno el curso, me ha funcionado tod muy bie hasta ahora. Vas a continuar con el proyecto hasta completarlo o llega hasta aqui? saludos.
FERNANDO FRANCO MARTINEZ Me da mucho gusto que mi material te ayuda, y claro el proyecto sigue estoy preparando peticiones Ajax para el proximo tutorial, acabaremos la app, me gustaria subir mas videos pero estoy en final de cuatrimestre y estoy muy atareado xD, Saludos
EN LA VERSION 5.3 DE LARAVEL PARA QUE NOS REDIRECCIONE A LA RAIZ TENEMOS QUE IR A LA CARPETA EXCEPTIONS EN EL ARCHIVO HANDLER.PHP . :D en esta version lo movieron.
Mi repositorio, excelente tutorial :D estoy aprendiendo muchisimo. GRACIAS
github.com/BrayanMurphy/Cinema-Laravel-5.3.git
Gracias por la ayuda, me funciono bien Tu Github no funciona.
Hola Raul Palacios muy buen tutorial, pero he seguido todo el paso a paso, pero no me ejecuta, debido a que al ingresar los usuarios así no sean administradores pasan a la interfaz de admin. No se si es por la versión de laravel, ya que estoy implementando laravel 5.7. Agradecería de antemano su ayuda o alguno que lea este mensaje que le haya ocurrido lo mismo y lo haya resuelto. Muchas gracias
como puedo caducar la session?? despues de 10 minutos??
Saludos Raúl, como hago para que al haber ingresado no se permita volver al index inicial. o que el formulario index sea otro
Aplicando el middleware a la accion correspondiente, incluso puedes aplicar un middleware a un grupo de rutas, saludos
Buenas Raul!!, primero gracias por los videos.
Consulta: Estoy probando este metodo de aplicar Middleware con laravel 5.2 pero no me funciona para nada.
Que cambia el proceso en 5.2?
gracias.
saludos.
Version 5.2 =
Hola Raul, gracias a ti he aprendido a utilizar Laravel, te quiero preguntar si conoces alguna forma para obtener todos los países, regiones, estados, barrios, etc y almacenarlos en MySql u obtenerlos desde la nube, con esta u otras herramientas, de-pronto una API o repositorio para facilitarnos esta tarea. Gracias.
+Filma ción “Filmación Manizales” Me da mucho gusto que te sea de ayuda mi contenido, y con ese tema si te quedo mal, nunca e trabajado con algo asi xD, saludos.
Gracias de todas maneras, excelente trabajo :)
no hay por que, saludos :D
+Filma “Filmación Manizales” ción este te puede servir stevephillips.me/blog/mysql-dump-every-country-and-state-world
Si alguien lee esto y esta con laravel 5.7 es todo igual con la unica diferencia que creen su propio middle y hacen lo del video ahi y tienen que agregar el middleware en el archivo kernel en la seccion de route middleware y en el frontcontroller el middle ware que usaran no sera auth sera el nuevo que agregaron al kernel si tienen dudas yo les puedo ayudar :)
Yo tengo problemas con el redireccionamiento de raiz, ya que he leido que debemos de colocar la funcion en handler pero esta no me regresa a la pagina usuario ¿Que puedo hacer?
Luis Alejandro Davila Ramos Mira primero copias la función del video o la de un comentario de abajo no me recuerdo de quien pero el público la función luego vienes en la consola php artisan make:middleware le pones un nombre que quieras una ves creado pegas la función en el middle luego el nombre de ese archivo lo agregar en el archivo kernel en la sección de middleware pones 'nombre_middleware' = 'ruta del archivo' luego en el controller lo mandas a llamar
@@duendelocoify utilice esta funcion de Cristian E. Ruiz Aguilar:
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
return redirect()->guest('/');
}
junto con la extension use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; para ver si me lo tomaba en cuenta
Aunque segui todos los pasos no logro hacer que funcione la redireccion ni siquiera en el administrador
Hola Pedro Pablo, yo he seguido todos el paso a paso del video, pero en el momento de autenticar los usuarios, pasan sin ningún problema a la interfaz de admin. Yo estoy usando laravel 5.7 me podrías ayudar
son hermanos con duilio palacios?
Hola
Una pregunta:
Me di cuenta que redirect lo has usado de varias maneras Ejemplo:
Redirect::to('url');
redirect('/url');
redirect()->to('url');
que diferencias hay entre estas no son lo mismmo y xq solo la Redirect::to tubiste q importar libreria y las otra no??
para eso esta la documentacion
Hola Raul en la version 5.5 no tengo la carpeta autenticate.php, dicen que en esta version es la de handler.php, lo que no se bien como quedaria?
Puedes crear tu propio middleware y agregar la funcionalidad del Authenticate, ahi otro problema seria si utilizas el Scaffold de Auth que se implemento en las ultimas versiones de laravel.
Puedes consultar en la respuestas de Cristian E Ruiz Aguillar.
Hola, una pregunta, por ejemplo si mi tabla usuarios maneja Roles de usuario, por ejemplo, "Administrador", "Usuario1", "Usuario2", quienes solo podrán entrar a una sección determinada del sistema, esto mismo lo podría hacer como en tu ejemplo?, crear un Middleware y validar el rol y redireccionar desde ahi a la pagina a la que pertenece??, y una vez mas Excelente vídeo!!!
+Faustino Olan Claro!, normalmente se crea un enum en la migracion con todos esos tipos de usuario y despues gracias al middleware puedes validarlos, incluso para cada accion tambien puedes utilizar Politicas :D, saludos
+Raul Palacios Excelente!!!!! Gracias!!!!
Orale, de que saludos :)
Hola Raul, gracias por tu esfuerzo en tan buen tutorial. Tengo varias consultas: 1- como puedo administrar roles sin tener que colocar un Middleware en todos los controladores (por ejemplo en Codeigniter uno puede usar Hooks), 2-Como validar si la sesión sigue activa en una petición Ajax. Saludos.
+Bryan Rojas Hola que tal no te preocupes yo los hago con mucho gusto para ustedes, en cuanto a tu pregunta (Desconozco Codeigniter) puedes aplicar el Middleware a las rutas en grupo te dejo el link de la documentacion laravel.com/docs/5.1/middleware#registering-middleware
Si lo que buscas es saber si tu usuario aun esta conectado es con el Facade Auth, de la manera siguiente Auth::check() esto dentro de un if te lanzaria un true o false, saludos
Hola Raul Tengo un inconveniente al ultimo paso para que no se muestre el li de Usuarios si no es el id 1, me funciona bien pero al ingresar con usuario 1 me lo muestra pero cuando le doy para crear un nuevo usuario se va a la ruta pero sale la pantalla en blanco no muestra nada, verifique y el problema esta con el middleware admin porque lo quito de Usuariocontroller y funciona bien. espero tu respuesta amigo Muchas gracias
Tal vez tu problema debe ser el donde inicia y donde termina tu validacion si es usuario con id 1 en la vista del template
+Jesus Caro Yo también tenía ese problema, pero me di cuenta que faltaba un return al final.
public function handle($request, Closure $next)
{
if($this->auth->user()->id != 1){
Session::flash('message-error', 'Sin privilegios');
return redirect()->to('admin');
}
return $next($request);
}
+Rafael Salcedo Me has salvado Gracias!
Hola raul como estas? gracias por los videos. Estoy usando el middleware para la autenticación y funciona excelente, pero como puedo hacer un redirect al login cuando expire la sesion y me de un timeout? por que cuando la sesion expira me da un error al tratar de acceder a los enlaces. Muchas gracias
jose garcia pues en tu logica donde estas estableciendo ese timeout redirecciona al usuario al login.
+Raul Palacios Como tal no he establecido un timeout, solo que luego de un tiempo expira la sesion y quisiera saber en que contolador le digo que se vaya al login cuando eso pase, si es el auth o cual otro?
+jose garcia El tiempo que dure la sesion puedes modificarlo en el config/session en cuanto redirigir al login puede hacerlo el propio middleware cuando trate de hacer alguna accion una vez terminada la sesion se redirige al login.
Excelente Raúl gracias por tu comentario me ha sido de gran ayuda. Saludos
no hay de que mucha suerte, saludos :D
Hola amigo primero re felicito por los tutoriales muy buenos!.Segundo tengo un problema que al cerrar sesión y dar atrás me sigue mostrando el panel del admin, sabes como puedo solucionar eso.
+Johan Villamil Si es un problema muy comun y esto es por que el navegador guarda la cache, lo que deberiamos hacer es especificar que no se almacene dicha cache yo encontre una solucion que se hacia creando un partial donde se incluian diferentes cabeceras y solamente incluyes estas donde lo creas conveniente
Tal vez te sean de ayuda, saludos
+Raul Palacios No sirve =( esta bien dificil arreglar ese error
No es un error simplemente es por que el navegador almacena el cache, y si como bien dices te permite regresar pero no permite realizar ninguna acción, si encuentro una nueva solución la comparto saludos.
+Raul Palacios Vale yo tambien seguire intentando como arreglarlo
hola Raúl tengo una duda, como evito que se visualicen otros registros con solo cambiar el id de la ruta
localhost/usuario/1/edit por
localhost/usuario/2/edit
+Ramon Morales Puedes hacerlo con un Middleware o utilizando el Modulo Authorization con can y endcan, saludos
+Ramon Morales a que te refieres con que no se visualicen?
Hola de nuevo yo jeje una pregunta hay alguna orma para evitar siempre la ejecucion de php artisan serve?
+chechorjuela En que sistema operativo estas? puedes utilizar algun empaquetado o configurar un servidor como apache para que corra tu aplicacion, saludos
+Raul Palacios hola gracias por responder estoy usando Ubuntu y tengo configurado en el virtual host pero al entrar a los modelos admin prueba me indica q la página no la encuentra gracias
Puede ser que no este activado el modulo de sobre escritura prueba sudo mod rewrite, saludos
gracias ya habilite el moudlo pero sigue saliendo el error 404
Mira en el ultimo video de deployment configuramos en producción un servidor apache sobre linux, tal vez te sea de ayuda, saludos
Hola oye estoy con la version 5.2 de Laravel y hago lo que tu haces pero no me muestra nada independientemente del usuario con que ingrese sesion. Hago exactamente lo que haces pero no me muestra nada del menu
Hola saludos, muy buen eltutorial pero a mi tambien me paso lo mismo para 5.2 no me funciono. y lasolucion fue la siguiente en el meddleware admin que creamos, elimina todo ese contructor que alli se creo y en el metodo handle agrega esto.
if(\Auth::user()->id != 1){
Session::flash('message-error','Sin Privilegios');
return redirect()->to('admin');
}
return $next($request);
yo tambien elimine la linea de codigo de lalibreria Guard.
Muchas Gracias Raul y espero que te funcione Keli.
Version 5.2 =
Hola, he intentado utilizar $this->middleware('auth',['only'=>'index']); pero no tengo exito, igual permite que el usuario autenticado haga cualquier otro proceso del controlador. Que podria revisar?
eso es por que solo verificas que este logeado en el metodo index, debes encapsular todos los metodos, saludos
+Raul Palacios
Hola, estrañamente a mi tampoco me funciona asi le de only o except, no arraga y deja seguir visualizando todo, me podrias ayudar?. Gracias
Hola oye, pero como haces para que después de implementar el middleware auth, siga funcionando el login?, ya que si colocas dd($this->auth->user()); en el metodo handle del middleware Autentication para comprobar que se está obteniendo un usuario y sus datos regresa, null; o dd($this->auth->check()); regresa false, por ello no puede pasar el primer middleware 'auth'
+Ana Laura S No se abre ninguna sesión solamente mediante Guard verifico que el usuario logeado tenga un id o permiso.
+Raul Palacios Gracias, disculpa, ya luego formule mejor la pregunta, es que lo que me sucede es que desde que agrego está linea {!! Auth::User()->name !!} durante la utenticación (del video anterior) marca un error donde no puede obtener las propiedades del objeto, si lo quito funciona bien, pero luego al agregar al FrontController el middleware public function __construct(){ $this->middleware('auth', ['only' => 'admin']);
} ya no permite acceder al usuario, por que supongo que desde el error anterior no se está logeando corretamente el usuario, usted a que cree que se debe?
el login es correcto? y no se si las mayusculas afecten quedaria algo así {!!Auth::user()->name!!}, verifica si tu login es correcto.
+Ana Laura S Comparto un error similar, lo que me ocurrió es que antes de aplicar los middlewares cree algunos usuario, luego de aplicar los middlewares podia acceder a sistema con aquellos usuarios, pero no con los usuario que creo despues de esto :/
como cuando conoces al amor de tu vida por youtube
Hola que pena la molestia pero es que tengo un problemita, tengo esta ruta :formulacion/crear/formula/{tipo} y en un formulario mando: formulacion/crear/formula?tipo=CG pero me sale error en la ruta,gracias.
+Easylisimo cual es el error?
El problema es cuando hago formularios y hago peticiones con get, por ejemplo pongo un controlador con un id como parámetro y en lugar de darme el valor de la variable me arroja es el nombre de la variable,supongo que no se puede hacer así y que me tocará capturarlo mediante Input,no? gracias por la atención.
+Easylisimo tal vez ahi esta tu problema que la ruta la especificas como get y deberia ser post
Hola Raul, tengo un problema el middleware no funcion no se lo que es
quiero bloquear un controlador completo entones tengo el codigo asi;
public function __construct(){
$this->middleware('auth');
}
Pero no funciona, revise el middleware y no tiene nada malo, tambien esta registrado en el kernel....
Hola Raul, se soluciono el tema, al parecer para que funcione correctamente hay que reinicar la aplicacion, al hacer eso se soluciono, aunque no se si ese era el problema real, pero no hice nada mas que lo solucionara :)
+TheMoralish Podria ser, aveces las rutas se quedan con el cache, saludos
¿Qué IDE estás utilizando en estos videos?
+Juan Leonardo Carrasco Es un editor de textos, sublime text puedes revisar como configurarlo para Laravel dentro de mi canal, saludos
+Juan Leonardo Carrasco Es un editor de textos, sublime text puedes revisar como configurarlo para Laravel dentro de mi canal, saludos
Hola te comento borre los usuario de la bases de datos con phpmyadmin(xampp) una vez terminado el tutorial claro no tenia un usuario creado entonces no podia aceder al administrador,inserte los datos en la bases de datos manual pero cuando lo meto en el panel de logearse me dice datos incorrectos.Como puede insertar el admin sin el panel de control de agregar?
Gamesr Xurrasco xD, puedes desproteger la aplicacion y acceder quitando del layout admin el Auth::user()->name y agregar tu usuario u otra manera es con los seeder en la BD laravel.com/docs/5.1/seeding, Saludos :D
Raul Palacios desproteger la aplicacion a que te refieres que debo quitar estoi saturado intendo quitarlo nose ahora mismo que debo hacer ya quite el Auth::user()->name pero nada
dentro del controlador de Usuario solo borra el middleware y tendras acceso sin problemas
Trying to get property of non-object me sale cuando lo quito del usuariocontroller y qiero entrar por la ruta /usuario/create me sale ese error
Trying to get property of non-object (View: C:\xampp\htdocs\laravel
esources\views\layouts\admin.blade.php) (View: C:\xampp\htdocs\laravel
esources\views\layouts\admin.blade.php)
si por que debes quitar el Auth::user, debes quitarlo del layout del admin en conjunto con la validacion en que si el usuario es administrador (Auth::user()->id) que se encuentra en el mismo layout
Hola buenas Primero:queria hacerte referencia sobre las escriptacion y desepcritacion de las contraseñas si se puede una vez escrutada la contraseña con el método hash:make poder desencriptar esa contraseñaSegundo el tema de seguridad de la pagina una vez subida que tipo de procedimientos para saber que tu pagina esta medianamente segura.Gracias
Las contraseñas nunca se desencriptan, en cuanto a la seguridad de la app solo puedes preocuparte por algunos metodos de inyeccion que en Laravel se controlan muy bien de ahi en fuera depende mucho de la seguridad de tu servidor, saludos
Disculpa mi anterior comentario no me expliqué muy bien. En el caso de contraseñas las hasheamos , pero hay cierta informacion de menor relevancia que queremos guardar en la base de datos para despues mostrarla, no nos gusta guardar estos datos (no son confidenciales pero no mostrables) sin encriptar , mi duda es como uso la encriptacion y desencriptacion en laravel he leido algo acerca de una clase llamada Crypt. ¿Qué me aconsejas?
Ok, pues supongo que debe haber alguien que si tenga acceso a esa informacion? Con un middleware podrias cpntrolar el acceso ya si buscas algo mas "seguro" pues podrias encriptar ña informacion pero toma em cuenta qie esto te consumira mas recursos tanto al almacenar y al momento en que el cliente quiera ver la informacion imagina desencriptar 500 registros, saludos
alguien puede ayudarme con este error....InvalidArgumentException in UrlGenerator.php line 304:
Route [login] not defined.
crea la ruta login,
Route::get('login', function(){
return view('login');
});
creo que es por que estas trabajando con una version mas reciente, y la cuestion es que no tienes bien ruteados los middleware ve al archivo kernel y busca el 'auth' => \Cinema\Http\Middleware\Authenticate::class, asi va creo
al que sigue...oie...entré a la bdd y noté que los usuarios se están guardado con contraseña no encriptada... según yo he seguido los videos tal cual...igual ahorita checo
saludos!!! al que sigue!
+lupitayoh Raul ignora lo de la contraseña xDD si era error mio...solucionado!! ahora sí al que sigue!
+lupitayoh jaja ok, saludos :D
Que tal Raul .. Me gustaron muchos tus videos ..
Estamos con un proyecto de comunidad www.laravel.com.mx Te gustaria colaborar? ? Saludos !!
Jose David Portales Que tal claro que conozco tu comunidad incluso en mis inicios de Laravel me fue de muchísima ayuda, este proyecto aun esta en construcción no se en que te gustaría que le aportara a tu comunidad? , Saludos :D
pa genial yo estoy haciendo articulos por mi cuenta acá les dejo el link blastcoding.com/como-utilizar-middelwares-en-laravel/