laravel-5.3 - personal - laravel passport tutorial español
Laravel 5.3 Passport JWT Authentication (3)
Anteriormente cuando estaba usando laravel 5.2, usé un paquete de terceros https://github.com/tymondesigns/jwt-auth/ para realizar la autenticación basada en JWT. Donde solo tuvimos que pasar el nombre de usuario y la contraseña para obtener un token.
Ahora, en la versión 5.3 con la introducción del pasaporte, deseo realizar una autenticación basada en JWT, pero el pasaporte requiere que especifique el client_id y el client_secret junto con el nombre de usuario y la contraseña. que no estaba allí en tymondesigns / jwt-auth.
Si hago una solicitud sin el client_id, arroja un error http://pix.toile-libre.org/upload/original/1482908288.png pero cuando paso el client_id y el client_secret, entonces funciona bien http://pix.toile-libre.org/upload/original/1482908143.png
¿Cómo puedo realizar una solicitud JWT en laravel 5.3 y el pasaporte con solo el nombre de usuario y la contraseña y sin especificar client_id y client_secret?
$ solicitud-> usuario (); no funcionaba para mí porque el middleware está configurado para la web, que también necesito + api. Los documentos no son claros sobre cómo controlar ambos escenarios.
Pude obtener detalles de los usuarios con el token Auth Authenticer +, y en Laravel:
use Illuminate/Support/Facades/Auth;
Route::get(''/user'', function() {
return Auth::guard(''api'')->user();
});
Así que, finalmente, estoy respondiendo a mi propia pregunta. Esperemos que esto ayude a alguien que enfrenta un problema similar.
La autenticación JWT se puede hacer usando el pasaporte Laravel 5.3, solo siga los siguientes pasos:
- Instale Passport normalmente como se describe en este enlace https://laravel.com/docs/master/passport#installation
O sigue estos pasos:
- compositor requiere laravel / pasaporte
- agregue
Laravel/Passport/PassportServiceProvider::class,
a sus proveedores de aplicaciones - php artesano migrar
- pasaporte php artesano: instalar
- Agregue el rasgo
HasApiTokens
a su modelo de usuario - Pasaporte :: rutas (); en AppServiceProvider
- Configurar el controlador de la API para el pasaporte
Una vez hecho esto, cree un UserController y agregue los siguientes métodos en él:
public function auth(Request $request)
{
$params = $request->only(''email'', ''password'');
$username = $params[''email''];
$password = $params[''password''];
if(/Auth::attempt([''email'' => $username, ''password'' => $password])){
return /Auth::user()->createToken(''my_user'', []);
}
return response()->json([''error'' => ''Invalid username or Password'']);
}
public function index(Request $request)
{
return $request->user();
}
En rutas / api.php, agregue las siguientes rutas:
Route::post(''auth'', ''UserController@auth'');
Route::group([''middleware'' => ''auth:api''], function(){
Route::resource(''user'', ''UserController@index'');
});
Ahora haga una solicitud POST a http://localhost:8000/auth
con la dirección de correo electrónico y la contraseña como se muestra en la captura de pantalla ( http://pix.toile-libre.org/upload/original/1483094937.png ) Esto se obtendrá En AccessToken , puede usar este token para realizar otras solicitudes en su aplicación con el encabezado de Authorization
y el Bearer XXX
donde xxx es el accessToken que recibió de / api / auth endpoint.
Ahora, realice una solicitud GET a /api/user
con el encabezado de Authorization
y el valor del token, esto devolverá los detalles del usuario autenticado. (por ejemplo: http://pix.toile-libre.org/upload/original/1483095018.png )
También he publicado estos pasos en mi blog en http://chatterjee.pw/larvel-passport-jwt-authentication/
¡Espero que esto ayude!
Si no está interesado en OAuth y Client, probablemente quiera usar la autenticación JWT pura, si es así, puede consultar este paquete:
https://github.com/miladrahimi/larajwt
Declara un nuevo controlador de autenticación llamado "jwt" para proteger sus rutas autenticadas, proporciona un servicio para generar jwt de sus usuarios, y algunas otras herramientas como el cierre de sesión, el almacenamiento en caché del modelo de usuario, los filtros para verificar las propiedades adicionales de los usuarios, etc.