elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Página de elhacker.net en Google+ Google+


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  problema al devolver un throw UnexpectedValueException con codigo 401
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema al devolver un throw UnexpectedValueException con codigo 401  (Leído 484 veces)
Razzari

Desconectado Desconectado

Mensajes: 76


El que espera desespera


Ver Perfil
problema al devolver un throw UnexpectedValueException con codigo 401
« en: 28 Agosto 2017, 00:25 »

Hola como estan,
Mi problema es el siguiente, desde php estoy throweando la siguiente exception

https://fotos.subefotos.com/24f1afa503c047007f78ce82c0d182bbo.png


y recivo esto como respuesta en mi front end

https://fotos.subefotos.com/5fdff315dd820d1d4674fdf4206de0dbo.png

El problema es que llega con codigo 200, es decir 'ok' pero en mi throw yo esoty pasando como parametro el codigo 401 que es Unauthorized, a demas me en mi log aparece el nombre del archivo que dio error y la el numero de linea,

Alguien sabe en que estoy fallando ??  :o

Desde ya gracias y saludos !  ;-)




« Última modificación: 29 Agosto 2017, 01:29 por Razzari » En línea

"Los ordenadores son inutiles, solo pueden darte respuestas" Pablo Picasso
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 4.690



Ver Perfil WWW
Re: problema al devolver un throw UnexpectedValueException con codigo 401
« Respuesta #1 en: 28 Agosto 2017, 03:44 »

La clase Exception acepta un código de error que no tiene nada que ver con el STATUS HTTP. Es decir, el hecho de que pongas 401 como segundo parámetro, no quiere decir que PHP tiene que tirar un header 401. De hecho, las excepciones no fueron pensadas para eso ni mucho menos. Fueron pensadas para que se pudiesen capturar y analizar, no que redirigan porque si.

Entonces lo que tendrias que hacer, es tirar una excepción con ese codigo (o cualquier otro..), y luego usar try/catch a la hora de ejecutar el método.

Código
  1. class SeguridadAuth {
  2.  
  3.    public function login($credenciales){
  4.        if($credenciales['password'] !== '1234'){
  5.            throw new Exception('Usuario no autorizado', 401);
  6.        }
  7.  
  8.        return true;
  9.    }
  10.  
  11.  
  12.  
  13.    public function realizarLogin(){
  14.  
  15.        $credenciales = array(
  16.            'user' => 'Juan',
  17.            'password' => '12345'
  18.        );
  19.  
  20.        try {
  21.  
  22.            $this->login($credenciales);
  23.  
  24.        } catch(Exception $e){
  25.  
  26.            if($e->getCode() == 401){
  27.                http_response_code(401);
  28.                exit;
  29.            }
  30.  
  31.        }
  32.  
  33.        return true;
  34.    }
  35.  


http://php.net/manual/es/language.exceptions.php
http://php.net/manual/es/class.exception.php
http://php.net/manual/es/function.http-response-code.php

Saludos


« Última modificación: 28 Agosto 2017, 03:47 por #!drvy » En línea

Razzari

Desconectado Desconectado

Mensajes: 76


El que espera desespera


Ver Perfil
Re: problema al devolver un throw UnexpectedValueException con codigo 401
« Respuesta #2 en: 29 Agosto 2017, 01:29 »

La clase Exception acepta un código de error que no tiene nada que ver con el STATUS HTTP. Es decir, el hecho de que pongas 401 como segundo parámetro, no quiere decir que PHP tiene que tirar un header 401. De hecho, las excepciones no fueron pensadas para eso ni mucho menos. Fueron pensadas para que se pudiesen capturar y analizar, no que redirigan porque si.

Entonces lo que tendrias que hacer, es tirar una excepción con ese codigo (o cualquier otro..), y luego usar try/catch a la hora de ejecutar el método.

Código
  1. class SeguridadAuth {
  2.  
  3.    public function login($credenciales){
  4.        if($credenciales['password'] !== '1234'){
  5.            throw new Exception('Usuario no autorizado', 401);
  6.        }
  7.  
  8.        return true;
  9.    }
  10.  
  11.  
  12.  
  13.    public function realizarLogin(){
  14.  
  15.        $credenciales = array(
  16.            'user' => 'Juan',
  17.            'password' => '12345'
  18.        );
  19.  
  20.        try {
  21.  
  22.            $this->login($credenciales);
  23.  
  24.        } catch(Exception $e){
  25.  
  26.            if($e->getCode() == 401){
  27.                http_response_code(401);
  28.                exit;
  29.            }
  30.  
  31.        }
  32.  
  33.        return true;
  34.    }
  35.  


http://php.net/manual/es/language.exceptions.php
http://php.net/manual/es/class.exception.php
http://php.net/manual/es/function.http-response-code.php

Saludos

Hola ! estuve leyendo bastante la documentación que pasaste !
Ya lo estoy poniendo en practica ! Genial !
del lado del front tengo mi servicio que según el tipo de error que reciba es el mensaje que muestra !
Saludos y como siempre gracias !!
En línea

"Los ordenadores son inutiles, solo pueden darte respuestas" Pablo Picasso
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines