21 de diciembre de 2016

LogIn simple en Slim Framework

   En la entrada anterior explicaba como conectar Slim Framework a MySQL/MariaDB, si ya conectamos a la BD utilizando PDO entonces solo nos resta validar los datos del usuario, para eso tenemos a nuestra disposición los Middleware, de forma simple basta con hacer lo siguiente:
$app->get('/login', function ($request, $response, $args) {
    $input = $request->getParsedBody();
    if($input['usuario'] == "hola" && $input['clave'] == "mundo") {
        $_SESSION["usuario"] = "carlitox";
        return $this->response->withJson(array("ok"=>"acceso autorizado"));
    } else {
        return $this->response->withJson(array("error"=>"acceso negado"));
    }
});

$app->get('/logout', function ($request, $response, $args) {
    session_destroy();
    return $this->response->withJson(array("ok"=>"sesion finalizada"));
});

$app->get('/test', function ($request, $response, $args) {
    return $this->response->withJson(array("ok"=>"prueba A"));
})->add(function ($request, $response, $next) {
    if(!isset($_SESSION["usuario"]))
        return $this->response->withJson(array("error"=>"acceso negado"));
    $response = $next($request, $response);
    return $response;
});
   Podemos agrupar varias rutas, por ejemplo:
$app->get('/login', function ($request, $response, $args) {
    $input = $request->getParsedBody();
    if($input['usuario'] == "hola" && $input['clave'] == "mundo") {
        $_SESSION["usuario"] = "carlitox";
        return $this->response->withJson(array("ok"=>"acceso autorizado"));
    } else {
        return $this->response->withJson(array("error"=>"acceso negado"));
    }
});

$app->get('/logout', function ($request, $response, $args) {
    session_destroy();
    return $this->response->withJson(array("ok"=>"sesion finalizada"));
});

$app->group('/test', function() {
    $this->get('/a', function ($request, $response, $args) {
        return $this->response->withJson(array("ok"=>"prueba A"));
    });
    $this->get('/b', function ($request, $response, $args) {
        return $this->response->withJson(array("ok"=>"prueba B"));
    });
})->add(function ($request, $response, $next) {
    if(!isset($_SESSION["usuario"]))
        return $this->response->withJson(array("error"=>"acceso negado"));
    $response = $next($request, $response);
    return $response;
});
   Con esto tenemos un inicio de sesión simple utilizando PHPSESSID.

3 comentarios:

  1. hola carlos estoy probando en slim 3 y no me esta funcionando pruebo co un rest cliente . pero no se si esta bien tu metodo porque siembpredevuelve acceso negado
    ahi que nstalar alguna dependencia desde ya muchas gracias

    ResponderEliminar
  2. Hola Pablo, comparte tu código y veamos cual es el problema, saludos!

    ResponderEliminar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.