Si quieren ampliar sobre los códigos de respuesta link
Introducción
PHP: qué aprenderás en este curso
Herramientas
IDEs
Virtualización con Vagrant
Configuración de virtual host
Características avanzadas del lenguaje
Closures
Type Hinting
Agregar imágenes en Jobs
Salvar imágenes en Jobs
Traits
Endpoint to delete Jobs
Third party Traits - Soft Delete
Técnicas de programación
SOLID
SOLID a profundidad
Inyección de dependencias
Contenedor de inyección de dependencias
Middlewares y PSR15
Implementando el server request handler
Creando un middleware
Errores y debug
Error Handling
La biblioteca SPL
Debug
Xdebug
Logs
Trabajando con Monolog
Databases
Migraciones de bases de datos
Comandos y Tareas asíncronas
Comandos
Formulario para contacto
Emails
Async tasks
Procesar tareas asíncronas
Crear un comando para agregar usuarios
Seguridad
Security
Security Examples
Conclusiones
Crea una API Rest
Cierre
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
La autenticación la manejaremos a través de un middleware.
Para crear nuestro middleware y como estamos trabajando con PSR-15, utilizaremos la interfaz que nos provee PSR-15 lo cual genera un contrato entre las clases que usamos y las clases que usan otras librerías. Así aseguramos interoperabilidad entre aplicaciones.
Un middleware tiene la parte del handler pero puede hacer cosas antes o después.
Aportes 20
Preguntas 2
Si quieren ampliar sobre los códigos de respuesta link
Cuales pueden ser los errores
Fatal error: Uncaught Error: Class 'App\Middleware\AuthenticationMiddleware' not found in C:\xampp\htdocs\proyectos\public\index.php:144 Stack trace: #0 {main} thrown in C:\xampp\htdocs\proyectos\public\index.php on line 144
y si deseo colocar mas rutas autenticadas ?
Interesante la forma de implementarlo, y prácticamente Harmony se encarga de procesar los valores de retorno y mandarlos al navegador.
Los middlewares sin duda son importantes porque son filtros, así evitamos que lleguen al core de nuestra aplicación innecesariamente:D!
Mi midlleware Mejorado para autenticación
<?php
namespace app\Middlewares;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ResponseInterface;
use Zend\Diactoros\Response\EmptyResponse;
class AuthenticationMiddleware implements MiddlewareInterface
{
private $routes;
/**
* __construct
*
* @param RouterContainer $router
*
* @return void
*/
public function __construct( $router)
{
$this->routes = $router;
}
/**
* process
*
* @param ServerRequestInterface $request
* @param RequestHandlerInterface $handler
*
* @return ResponseInterface
*/
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
if($this->rutaAuntenticada($request)){
$sessionUserId = $_SESSION['userId']?? null;
if(!$sessionUserId)
{
return new EmptyResponse(401);
}
}
return $handler->handle($request);
}
/**
* rutaAuntenticada
*
* @param string $ruta
*
* @return booelan
*/
private function rutaAuntenticada($request)
{
$matcher = $this->routes->getMatcher();
$route = $matcher->match($request);
$handlerData = $route->handler;
$needsAuth = $handlerData['auth'] ?? false;
if($needsAuth){
return true;
}
return false;
}
}```
Pero que jaleo 😦
La autenticación la manejaremos a través de un middleware.
Para crear nuestro middleware y como estamos trabajando con PSR-15, utilizaremos la interfaz que nos provee PSR-15 lo cual genera un contrato entre las clases que usamos y las clases que usan otras librerías. Así aseguramos interoperabilidad entre aplicaciones.
Los status 200 son status correctos.
Los status 400 estamos enviando algún error culpando al usuario.
Los status 500 son errores en nuestro servidor.
Un middleware tiene la parte del handler pero puede hacer cosas antes o después.
La autenticación la manejaremos a través de un middleware
Para crear nuestro middleware y como estamos trabajando con PSR-15, utilizaremos la interfaz que nos provee PSR-15 lo cual genera un contrato entre las clases que usamos y las clases que usan otras librerías. Así aseguramos interoperabilidad entre aplicaciones
Los status 200 son status correctos
Los status 400 estamos enviando algún error culpando al usuario
Los status 500 son errores en nuestro servidor
Los status 300 son redirecciones cambios en las URL
Un middleware tiene la parte del handler pero puede hacer cosas antes o después
Me sale este error
Alguien de casualidad sabra por que me sale?
Siempre que trabajamos con Middlewares en PSR-15 debemos implementar la interface que nos provee PSR-15.
Excelente por el uso de los Middlewares, estos son como filtros como tal de las peticiones, en los cuales se le puede decir que haga cualquier cosa en esos pasos intermedios antes de llegar a la aplicación y después de salir de la aplicación
A mi me salio error en la request, lo soluciones así ya con los use para los que no esten usando un editor tan inteligente
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Laminas\Diactoros\Response\EmptyResponse;
class AuthenticationMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
if ($request->getServerParams()['REQUEST_URI'] === '/admin') {
$sessionUserId = $_SESSION['userId'] ?? null;
if (!$sessionUserId) {
return new EmptyResponse(401);
}
}
//continuar
$handler->handle($request);
}```
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.