Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problema con laravel 5 y JWT

Estas en el tema de Problema con laravel 5 y JWT en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos. Cordial saludo. No he podido integrar a JWT con laravel 5 . LLevo varios días en eso pero la documentación que he ...
  #1 (permalink)  
Antiguo 28/05/2015, 16:41
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 15 años, 6 meses
Puntos: 12
Busqueda Problema con laravel 5 y JWT

Hola a todos. Cordial saludo.

No he podido integrar a JWT con laravel 5. LLevo varios días en eso pero la documentación que he encontrado no funciona.

Estoy probando las peticiones a los controladores con la aplicación postman (Complemento de google chrome)

Y solo he logrado que me funcione bien el método que hace el registro de usuarios:

Código PHP:
public function store()
{
$credentials $this->request->only('name','email''password');
$credentials['password'] = Hash::make($credentials['password']);

try {
  
$user User::create($credentials);
} catch (
Exception $e) {
  return 
response()->json([
    
'error' => 'User already exists.'
    
],HttpResponse::HTTP_CONFLICT
  
);
}
$token JWTAuth::fromUser($user);
return 
response()->json(compact('token'));


Y este método que es el de iniciar sesión (JWT le asigna un token al usuario si existe en la base de datos)

login

Código PHP:
public function store()
{

$credentials $this->request->only('email''password');


  if( !
$token JWTAuth::attempt($credentials)) {

    return 
response()->json([
        
'Success' => false
        
], HttpResponse::HTTP_UNAUTHORIZED
    
);

  }

return 
response()->json(compact('token'));


Hasta acá todo bien.

Pero en el archivo routes cuando voy a utilizar el Middleware JWT, para hacer la validación del token, este no hace ninguna validación y pasa de largo a ejecutar la función.

Código PHP:
Route::get('/prueba-jwt-auth-restringido', [
'before' => 'jwt-auth',
function () {
  return 
'Hola JWT :)';
}
]); 
En la siguiente ruta, igualmente el, 'before' => 'jwt-auth' no hace absolutamente nada, halla o no halla token.

Código PHP:
Route::get('/prueba-jwt-auth-restringido', [
'before' => 'jwt-auth',
function () {
  
$token JWTAuth::getToken();
  
//$user = JWTAuth::toUser($token);    
  
var_dump($token); // False 
}
]); 

Pero ademas cuando envío el token a través de la aplicación POSTMAN, es como si no lo enviara, y créanme con todo lo que he tenido que leer estoy casi seguro que lo estoy enviando bien:



(En la imagen cambie token por Autorization pero tampoco funciona)

En mi archivo kernel e omitido los CORS por que no me permitían hacer peticiones desde POSTMAN

Código PHP:
    protected $middleware = [
    
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
    
'Illuminate\Cookie\Middleware\EncryptCookies',
    
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
    
'Illuminate\Session\Middleware\StartSession',
    
'Illuminate\View\Middleware\ShareErrorsFromSession',
// 'gimnasio\Http\Middleware\VerifyCsrfToken', 
// 'gimnasio\Http\Middleware\Cors',
// 'Barryvdh\Cors\Middleware\HandleCors',
]; 
A pesar de colocar las siguientes cabeceras CORS tampoco me funciono nunca y estoy decepcionandome un poco con laravel 5. Se los juro. Es mi framework preferido.

Código PHP:
  $response $next($request);
  
$response->headers->set('Access-Control-Allow-Origin' '*');
  
$response->headers->set('Access-Control-Allow-Methods''POST, GET, OPTIONS, PUT, DELETE');
  
$response->headers->set('Access-Control-Allow-Headers''Content-Type, Accept, Authorization, X-Requested-With');
  return 
$response

Agradezco su ayuda, llevo varios días con este problema y no encuentro algo solido que funcione realmente. Y de verdad quisiera poder integrar a JWT para poder utilizar Angularjs de la mejor manera.
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-

Última edición por calichecal; 28/05/2015 a las 17:02
  #2 (permalink)  
Antiguo 28/05/2015, 17:27
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: Problema con laravel 5 y JWT

Cita:
Iniciado por calichecal Ver Mensaje
Hola a todos. Cordial saludo.

No he podido integrar a JWT con laravel 5. LLevo varios días en eso pero la documentación que he encontrado no funciona.

Estoy probando las peticiones a los controladores con la aplicación postman (Complemento de google chrome)

Y solo he logrado que me funcione bien el método que hace el registro de usuarios:

Código PHP:
public function store()
{
$credentials $this->request->only('name','email''password');
$credentials['password'] = Hash::make($credentials['password']);

try {
  
$user User::create($credentials);
} catch (
Exception $e) {
  return 
response()->json([
    
'error' => 'User already exists.'
    
],HttpResponse::HTTP_CONFLICT
  
);
}
$token JWTAuth::fromUser($user);
return 
response()->json(compact('token'));


Y este método que es el de iniciar sesión (JWT le asigna un token al usuario si existe en la base de datos)

login

Código PHP:
public function store()
{

$credentials $this->request->only('email''password');


  if( !
$token JWTAuth::attempt($credentials)) {

    return 
response()->json([
        
'Success' => false
        
], HttpResponse::HTTP_UNAUTHORIZED
    
);

  }

return 
response()->json(compact('token'));


Hasta acá todo bien.

Pero en el archivo routes cuando voy a utilizar el Middleware JWT, para hacer la validación del token, este no hace ninguna validación y pasa de largo a ejecutar la función.

Código PHP:
Route::get('/prueba-jwt-auth-restringido', [
'before' => 'jwt-auth',
function () {
  return 
'Hola JWT :)';
}
]); 
En la siguiente ruta, igualmente el, 'before' => 'jwt-auth' no hace absolutamente nada, halla o no halla token.

Código PHP:
Route::get('/prueba-jwt-auth-restringido', [
'before' => 'jwt-auth',
function () {
  
$token JWTAuth::getToken();
  
//$user = JWTAuth::toUser($token);    
  
var_dump($token); // False 
}
]); 

Pero ademas cuando envío el token a través de la aplicación POSTMAN, es como si no lo enviara, y créanme con todo lo que he tenido que leer estoy casi seguro que lo estoy enviando bien:



(En la imagen cambie token por Autorization pero tampoco funciona)

En mi archivo kernel e omitido los CORS por que no me permitían hacer peticiones desde POSTMAN

Código PHP:
    protected $middleware = [
    
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
    
'Illuminate\Cookie\Middleware\EncryptCookies',
    
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
    
'Illuminate\Session\Middleware\StartSession',
    
'Illuminate\View\Middleware\ShareErrorsFromSession',
// 'gimnasio\Http\Middleware\VerifyCsrfToken', 
// 'gimnasio\Http\Middleware\Cors',
// 'Barryvdh\Cors\Middleware\HandleCors',
]; 
A pesar de colocar las siguientes cabeceras CORS tampoco me funciono nunca y estoy decepcionandome un poco con laravel 5. Se los juro. Es mi framework preferido.

Código PHP:
  $response $next($request);
  
$response->headers->set('Access-Control-Allow-Origin' '*');
  
$response->headers->set('Access-Control-Allow-Methods''POST, GET, OPTIONS, PUT, DELETE');
  
$response->headers->set('Access-Control-Allow-Headers''Content-Type, Accept, Authorization, X-Requested-With');
  return 
$response

Agradezco su ayuda, llevo varios días con este problema y no encuentro algo solido que funcione realmente. Y de verdad quisiera poder integrar a JWT para poder utilizar Angularjs de la mejor manera.
Parece que es una modificación en el htaccess, pero no estoy seguro..
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-

Etiquetas: autenticación, laravel, login, token
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:14.