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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  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 3,145 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 am »

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 am por Razzari » En línea

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

Mensajes: 5.855



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

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 am 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 am »

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:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Extrayendo código fuente de una web (Problema con código generado por JS)
PHP
Littl3 4 8,696 Último mensaje 3 Marzo 2011, 04:13 am
por Nakp
Problema con un arreglo al devolver 5 valores maximos de un ramdom
Java
wnavashn 7 8,214 Último mensaje 1 Octubre 2013, 23:34 pm
por kurupi13
Problema al devolver objeto
Programación C/C++
shulneos 2 1,981 Último mensaje 28 Noviembre 2014, 21:13 pm
por shulneos
Devolver un Array
Programación C/C++
AprendiendoAProgramar 3 2,796 Último mensaje 3 Enero 2017, 15:24 pm
por TheFlash
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines