Felicitaciones maneja una muy buena metodológica, clara y practica, espero que platzi tome estas apreciaciones, para que evalúe y conozca que esta, es la calidad de clases que los estudiantes estamos buscando.
Gracias
Entender Laravel
¡Actualizamos este curso!
¿Qué es Laravel?
Herramientas necesarias para trabajar con PHP y Laravel
Entendiendo el ciclo de vida de las solicitudes web
Qué es un CRUD y cómo implementarlo
Lógica de controladores y vistas con datos de prueba
Creando un formulario
Comprender los Fundamentos de Laravel
Sistema de rutas y controladores
Uso de Middlewares
Validación de datos (rutas, vistas, formularios y controladores)
Blade: sistema de plantillas avanzado
Trabajando con el componente Laravel/UI
Aprender sobre Eloquent ORM
Eloquent: trabajando con este ORM
Relaciones de tablas
Colecciones y serialización de datos
Formato de valores en tablas y presentación de datos
Crear PlatziPress
Proyecto Blog: presentación y configuración inicial
Creación de tablas, entidades y datos de prueba
Plantillas de trabajo y entendiendo el login
Diseño visual con Bootstrap
Vista index y botones de acción
Implementación del formulario de creación
Implementación del guardado
Creando la función de editar un post
Actualizando nuestros posts
Integrando contenido audiovisual
Construir Proyecto Final: API con TDD (Intermedio)
Introducción al testing
Metodología TDD y testing HTTP
Proyecto API con TDD: presentación y configuración inicial
Store con TDD
Refactorización y validación en Store
Show con TDD
Update y validación con TDD
Delete con TDD
Index con TDD
Protección de una API con Login
Cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Profesor Italo Morales F
Veamos en este post cómo crear e implementar un middleware. La función principal es proporcionar una fácil y conveniente capa para filtrar las solicitudes HTTP. Existen diferentes maneras de hacerlo y de hecho Laravel incluye un middleware que verifica si el usuario está autenticado.
Puedes crear un middleware de registro y tener logs detallados de cada solicitud entrante, cualquier cosa que se te ocurra respecto a HTTP puedes llevarla a cabo usando esta tecnología.
$ php artisan make:middleware Subscribed
Este se crea en app/Http/Middleware/Subscribed.php
. Con él puedes verificar si el usuario está suscrito a mi plan de pago de mi sistema web. O crear un middleware que revise si el usuario que se intenta registrar es mayor de edad.
$ php artisan make:middleware VerifyAge
En ambos casos tendremos nuestros middleware estarán creados en app\Http\Middleware\
. Dentro de cada archivo debemos colocar la lógica de acceso correcto. Por ejemplo:
<?php
namespace App\Http\Middleware;
use Closure;
class Subscribed
{
//...
public function handle($request, Closure $next)
{
if ( ! $request->user()->subscribed) {
return abort(403, 'Sin suscripción activa');
}
return $next($request);
}
}
403: La solicitud fue legal, fue correcta, pero el servidor no la responderá porque el cliente no tiene los privilegios o permisos.
Y respecto a la edad podemos hacer lo siguiente:
<?php
namespace App\Http\Middleware;
use Closure;
class VerifyAge
{
//...
public function handle($request, Closure $next)
{
if ($request->get('age') < 18) {
return redirect('guidelines');
}
return $next($request);
}
}
Aquí dirigimos al usuario a una vista que tenga los textos apropiados para explicarle porqué no podemos seguir con el registro.
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
//...
protected $middleware = [];
//...
protected $middlewareGroups = [];
//...
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'subscribed' => \App\Http\Middleware\Subscribed::class,
'verify-age' => \App\Http\Middleware\VerifyAge::class,
];
//...
protected $middlewarePriority = [];
}
Y luego podemos usarla y aplicarla donde corresponde. Veamos en una ruta varios ejemplos:
Route::get('/example', 'ExampleController@...')
->middleware('auth', 'subscribed', 'verify-age');
Acá y en el video de la clase vimos la forma correcta de proteger a nuestras rutas o métodos en controladores, lo importante es definir qué queremos proteger o interceder y crear la lógica en un archivo aparte. Una persona con poca experiencia usaría estos if
pero en las vistas, en cada método de un controlador o en cada una de las rutas. Esto funcionaria pero no es la manera correcta de trabajar.
Aportes 45
Preguntas 5
Felicitaciones maneja una muy buena metodológica, clara y practica, espero que platzi tome estas apreciaciones, para que evalúe y conozca que esta, es la calidad de clases que los estudiantes estamos buscando.
Gracias
Para proteger un grupo de rutas con middleware al mismo tiempo, se puede usar el siguiente método:
Route::middleware(['auth'])->group(function () {
Route::view('/', 'welcome');
Route::resource('users', 'UserController');
}
Así no habría que poner ->middelware('auth) al final de cada ruta y queda el código más limpio.
Middleware trata sobre hacer filtrados a peticiones HTTP. Esto quiere decir, que a través de esta capa podemos agregar seguridad.
Los middleware no es un concepto de Laravel, es algo que siempre esta en el medio. En el mundo de las telecomunicaciones se usa con mayor frecuencia.
Los middleware son archivos/clases que van a estar dentro de la carpeta app → Http → Middleware, Laravel nos trae una serie de archivos.
Este línea de código nos ayuda a autenticar si un user está login o no.
middleware('auth');
🤞 Si vamos a utilizar el middleware(‘auth’); debemos utilizarlo en un solo lugar, o en la ruta o en el controlador pero nunca en los dos al mismo tiempo. Lo recomendado es hacerlo en las rutas.
Middleware.- El middleware proporciona un mecanismo conveniente para filtrar las solicitudes HTTP que ingresan a su aplicación. Por ejemplo, Laravel incluye un middleware que verifica que el usuario de su aplicación esté autenticado. Si el usuario no está autenticado, el middleware lo redireccionará a la pantalla de inicio de sesión. Sin embargo, si el usuario está autenticado, el middleware permitirá que la solicitud continúe en la aplicación.
php artisan make:middleware Subscribed
Este se crea en app/Http/Middleware/Subscribed.php. Con él puedes verificar si el usuario está suscrito a mi plan de pago de mi sistema web. O crear un middleware que revise si el usuario que se intenta registrar es mayor de edad.
pero ¿si solo quiero proteger con un middleware solo una de las 7 rutas cuando es resource como se hace?
Calidad de profesor 💯
Un middleware es básicamente ese intermediario que está entre la petición y el controlador, es código que se ejecuta antes de nuestro código principal, y efectivamente sirven para proteger las rutas aqu+i en laravel, yo en lo personal prefiero usar $this->middleware en un controlador porque prefiero proteger únicamente los métodos necesarios en lugar de proteger el controlador entero:D
No hay seccion de enlaces D:
Que Genial lo del Archivo Kernel.php hace que todo sea más facil
Yo lo aprendí así:
El concepto de middleware es como una cebolla, la petición HTTP tiene que pasar por todas las capas (middlewares) de la cebolla antes de llegar al centro (nuestro código en ruta o controlador).
El orden de los middlewares es muy importante y afecta la respuesta.
tengo platzi hace un año y al fin entiendo laravel buena metodología de enseñanza, clara y detallada.
Un Middleware se trata básicamente de un filtro de una petición HTTP. Esto quiere decir que, al acceder un página y hacer una solicitud, el middleware podría ser usado para agregar seguridad a esta antes de responder a la solicitud.
En Laravel los middleware se encuentran dentro de la carpeta app>http>middleware. Por defecto viene un middleware con la lógica para redirigir a un usuario a un formulario de login si no ha iniciado sesión.
Agregar un middleware a una ruta:
Route::get('/', function(){
return view('welcome');
})->middleware('<nombre>');
Para poder agregar el middleware primero hay que agregarlo en el archivo app>http>kernel.php. Ahí se encuentran todos los middleware que Laravel agrega por defecto.
También se pueden agregar middlewares a los controladores, en este caso de autenticación. De las dos formas funcionará, pero no se debe proteger la ruta y el controlador al mismo tiempo.
class UserController extends Controller{
public function __construct(){
$this->middleware('auth');
}
}
Por lo general se agregan a las rutas para mantener los controladores más limpios.
Para tener en cuenta: aparecen unos simbolos en el codigo
<?php
namespace App\Http\Middleware;
use Closure;
class Subscribed
{
//...
public function handle($request, Closure $next)
{
if ( ! $request->user()->subscribed) {
return abort(403, 'Sin suscripción activa');
}
return $next($request);
}
}
Lo Correcto seria:
<?php
namespace App\Http\Middleware;
use Closure;
class Suscribed
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!$request->user()->subscribed) {
return abort(403, "Sin suscripcion activa");
}
return $next($request);
}
}
Ufff me costo un poco entenderlo y más que todo saber aplicarlo.
Middleware, es un mecanismo conveniente para inspeccionar y filtrar las solicitudes Http que ingresan en nuestra aplicación.
referencia: https://laravel.com/docs/8.x/middleware#excluding-middleware
Middleware se usa para filtrar peticiones HTTP, se usa para dar seguridad de nuestras aplicaciones.
Es un término usado en todo el ámbito de la informática, especialmente en telecomunicaciones.
seccion de enlace, excelente
Excelente clase
Esta super, muy claro.
class UserController extends Controller
{
public function __costruct(){
$this->middleware('auth');
}
}
Excelente clase!
Asi me quedo en el web.php ya haciendo las configuraciones, espero este bien jeje
Route::get('/subscription', 'SubscriptionController')->middleware('subscribed');
Route::get('/verifyAge', 'VerifyController')->middleware('verify-age');
Laravel ofrece un muy buen sistema de autenticación, gracias a los Middleware.
Veamos en este post cómo crear e implementar un middleware. La función principal es proporcionar una fácil y conveniente capa para filtrar las solicitudes HTTP. Existen diferentes maneras de hacerlo y de hecho Laravel incluye un middleware que verifica si el usuario está autenticado
Puedes crear un middleware de registro y tener logs detallados de cada solicitud entrante, cualquier cosa que se te ocurra respecto a HTTP puedes llevarla a cabo usando esta tecnología
Auth es un Alias.
Muy interesante la forma de proteger las rutas, la manera como se inyecta el Middleware de Autenticación.
O crear un middleware que revise si el usuario que se intenta registrar es mayor de edad.
php artisan make:middleware VerifyAge
En la siguiente ruta es donde estan registrados los middlewares en el kernel
app > Http > Kernel.php
Gracias
Italo tiene muy buenos videos gratis en youtube !!! que felicidad encontrarlo aca
De verdad que buen profesor ❤️
Esta interesante el curso, gracias.
Excelente ahora me queda mas claro este concepto , gracias profesor su explicación es muy clara y precisa 😄
perfecto
muy bueno
que serian los closures?
Excelente, es muy simple la seguridad en laravel, que bien explico el tema el profe!
Una excelente Clase y un excelente Maestro.
se puede utilizar esto para crear diferentes middlewares de autentificacion, es decir, si mi aplicacion tiene 3 paneles de autentificacion, cada tipo de usuario se almacena en una tabla diferente, se puede crear un middleware para cada una de las tablas para autentificarse o como sera la forma correcta de hacerlo?
que es ::resource??
Excelente clase !!!
Documentación oficial sobre los middelwares en la pagina de Laravel, po si quiere informarse más.
https://laravel.com/docs/8.x/middleware
No sé qué me pasa pero estoy tan confundido como no lo había estado en los otros cursos previos.
Que genial clase, excelente el complemento en las notas de la clase
Una persona con poca experiencia usaría estos if pero en las vistas, en cada método de un controlador o en cada una de las rutas. Esto funcionaria pero no es la manera correcta de trabajar.
Este tema se me hace complejo
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?