Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/03/2016, 11:56
Avatar de Dundee
Dundee
 
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
auth:api intentando hacer api restful

Buenas a tod@s:
Estoy empezando con Laravel 5.2, y necesito hacerme una API restful, el tema es que no consigo registrarme mediante json con el end point creado, a continuación explico los pasos que he seguido para ver si algo he hecho mal (seguro que si jeje).

1 Primero corro el "php artisan make:auth"
2 En routes.php establezco el prefijo de la API y el middleware que se va a usar:
Route::group(['prefix' => 'api/v1', 'middleware' => 'auth:api'], function () {
Route::auth();

Route::get('/home', 'HomeController@index');
});


3 seguidamente miro mis rutas
Código:
        | GET|HEAD | /                              |      | Closure                                                         |                |
|        | GET|HEAD | api/v1/home                    |      | App\Http\Controllers\HomeController@index                       | auth:api,auth  |
|        | GET|HEAD | api/v1/login                   |      | App\Http\Controllers\Auth\AuthController@showLoginForm          | auth:api,guest |
|        | POST     | api/v1/login                   |      | App\Http\Controllers\Auth\AuthController@login                  | auth:api,guest |
|        | GET|HEAD | api/v1/logout                  |      | App\Http\Controllers\Auth\AuthController@logout                 | auth:api       |
|        | POST     | api/v1/password/email          |      | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | auth:api,guest |
|        | POST     | api/v1/password/reset          |      | App\Http\Controllers\Auth\PasswordController@reset              | auth:api,guest |
|        | GET|HEAD | api/v1/password/reset/{token?} |      | App\Http\Controllers\Auth\PasswordController@showResetForm      | auth:api,guest |
|        | GET|HEAD | api/v1/register                |      | App\Http\Controllers\Auth\AuthController@showRegistrationForm   | auth:api,guest |
|        | POST     | api/v1/register                |      | App\Http\Controllers\Auth\AuthController@register               | auth:api,guest |
+--------+----------+--------------------------------+------+-----------------------------------------------------------------+---------------

Nota: la verdad que eso de "auth:api,guest" me despista un poco, ¿que significa exactamente¿, usa el guard api o guest?.
4 Cambio en auth.php el default guard a "api".

5 Edito kernel.php

y esto es lo que tengo
Código:
<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::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' => [
            'throttle:60,1',
            'auth:api',
        ],
    ];

    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];
}
Finalmente abro REST Console , plugin de chrome y pruebo con el end point para registrarse, es decir " api/v1/register ".
Le paso como "RAW Body":
Código:
{
"username": "pepe",
"email" : "[email protected]",
"password": "passcool"
}
y en content-Type: application/json

He editado para añadir más información:
He probado cambiando en routes.php esto:
Código:
Route::group(['prefix' => 'api', 'middleware' => ['auth:api', 'throttle:60,1']], function () {
    Route::auth();

    Route::get('/home', 'HomeController@index');
});
Es decir he añadido "throttle:60,1" , entiendo que esto sirve para limitar el número de peticiones posible de los recursos, pero sigo con el mismo problema descrito anteriormente.


Siempre recibo un Status Code: 401 , y el mensaje "Unauthorized"
Gracias de antemano.
__________________
Videotutoriales de Drupal