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

Entender como funciona auth:api

Estas en el tema de Entender como funciona auth:api en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola unos cuantos dias trabajando con Laravel 5.1 para montar una api con Dingo y JWT, ya he conseguido que fuciona medio bien , yuhuuuu!!, ...
  #1 (permalink)  
Antiguo 03/04/2016, 12:18
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Entender como funciona auth:api

Hola unos cuantos dias trabajando con Laravel 5.1 para montar una api con Dingo y JWT, ya he conseguido que fuciona medio bien , yuhuuuu!!, ahora solo me falta entender algunas cosas. (seguramente algun@ me sugiera actualizar a 5.2 , pero por distintos motivos que no vienen al caso no puedo/debo hacerlo),

En mis rutas tengo definidas unas cuantas que necesitan autenticación, por ejemplo:

Código:
$api->version('v1', ['middleware' => ['api.auth']], function ($api) {
   

        $api->get('users', ['as' => 'users.index', 'uses' => 'App\Http\Controllers\UserController@index']);
        $api->get('users/{id}', ['as' => 'users.show', 'uses' => 'App\Http\Controllers\UserController@show']);
      

  
});
Kernel.php
Código:
<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
     
    ];
    
        /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
        ],

        'api' => [
       
        
        ],
    ];

    /**
     * The application's route middleware.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'jwt.auth' =>  \Tymon\JWTAuth\Middleware\GetUserFromToken::class,
        'jwt.refresh' =>  \Tymon\JWTAuth\Middleware\RefreshToken::class,
   
    ];
}
Mi duda es que auth:api no está en el archivo kernel.php definida y funciona de todas formas, por eso no entiendo donde se encuentra ese código que valida la autenticación api:auth, ¿alguien me podría acalarar?. Tengo más dudas pero creo que es más conveniente escribirlas en otros posts para no liar la cosa.

Gracias de antemano.
__________________
Videotutoriales de Drupal
  #2 (permalink)  
Antiguo 08/04/2016, 08:43
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Entender como funciona auth:api

Solo un detalle el ejemplo que estas colocando no es de L5.1 si no de la versión 5.2.
El middleware es auth:api no api.auth o api:auth.
El middlewae en cuestion esta indicado en el kernel como: 'auth' => \App\Http\Middleware\Authenticate::class.
Código PHP:
Ver original
  1. namespace App\Http\Middleware;
  2. use Closure;
  3. use Illuminate\Support\Facades\Auth;
  4. class Authenticate
  5. {
  6.     /**
  7.      * Handle an incoming request.
  8.      *
  9.      * @param  \Illuminate\Http\Request  $request
  10.      * @param  \Closure  $next
  11.      * @param  string|null  $guard
  12.      * @return mixed
  13.      */
  14.     public function handle($request, Closure $next, $guard = null)
  15.     {
  16.         if (Auth::guard($guard)->guest()) {
  17.             if ($request->ajax() || $request->wantsJson()) {
  18.                 return response('Unauthorized.', 401);
  19.             } else {
  20.                 return redirect()->guest('login');
  21.             }
  22.         }
  23.         return $next($request);
  24.     }
  25. }
Si te das cuenta pasa un parámetro $guard el cual le dice al mecanismo de autenticación de laravel que forma va usar para evaluar si ya hiciste login, para el ejemplo tu al middlware le pasas el parámetro api que sera el mecanismo que utilizara. Por defecto ese mecanismo solo compara como credenciales un token que previamente ya debes de tener guardado. Si quieres ver como funciona el api guard puede ver el código en el repositorio oficial:https://github.com/laravel/framework...TokenGuard.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: entender, laravel
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 14:48.