Saltar al contenido

¿Cómo usar Laravel Passport con tokens de concesión de contraseña?

Te damos la bienvenida a nuestra página, ahora vas a encontrar la resolución a lo que estabas buscando.

Solución:

Si está consumiendo su propia API, entonces no necesita llamar a http://example.com/oauth/token para el inicio de sesión del usuario porque entonces necesita almacenar client_id y client_secret en el lado de la aplicación. Mejor cree una API para iniciar sesión y allí puede verificar las credenciales y generar el token personal.

public function login(Request $request)

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

        if (Auth::attempt($credentials)) 
            // Authentication passed...
             $user = Auth::user();
             $token = $user->createToken('Token Name')->accessToken;

            return response()->json($token);
        

Finalmente, hay muchos puntos finales que obtengo del pasaporte que no creo que use, por ejemplo: oauth/clients*, oauth/personal-access-tokens* ¿hay alguna forma de eliminarlos de los puntos finales publicados por ¿pasaporte?

tienes que quitar Passport::routes(); de AuthServiceProvider y coloque manualmente solo las rutas de pasaporte requeridas. creo que solo necesitas oauth/token ruta.

¿Para qué sirve exactamente el valor de “La aplicación”?

si revisas oauth_access_tokens la tabla tiene un campo de nombre. $user->createToken('Token Name')->accessToken; aquí el “Nombre de token” almacenado en el campo de nombre.

¿Cómo usar Laravel Passport con tokens de concesión de contraseña?

Para generar un token de concesión de contraseña, debe almacenar client_id y client_secret en el lado de la aplicación (no recomendado, marque esto) y suponga que tiene que restablecer el client_secret entonces la aplicación de la versión anterior deja de funcionar, estos son los problemas. Para generar un token de concesión de contraseña, debe llamar a esta API como menciona en el paso 3.

$http = new GuzzleHttpClient;

$response = $http->post('http://your-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => 'client-id',
        'client_secret' => 'client-secret',
        'username' => '[email protected]',
        'password' => 'my-password',
        'scope' => '',
    ],
]);

return json_decode((string) $response->getBody(), true);

Generar ficha de refresh_token

$http = new GuzzleHttpClient;

$response = $http->post('http://your-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'refresh_token',
        'refresh_token' => 'the-refresh-token',
        'client_id' => 'client-id',
        'client_secret' => 'client-secret',
        'scope' => '',
    ],
]);

return json_decode((string) $response->getBody(), true);

También puede consultar este https://laravel.com/docs/5.6/passport#implicit-grant-tokens.

Abordando la pregunta 5

Finalmente, hay muchos puntos finales que obtengo del pasaporte que no creo que use, por ejemplo: oauth/clients*, oauth/personal-access-tokens* ¿Hay alguna manera de eliminarlos de los puntos finales publicados por pasaporte?


Passport::routes($callback = null, array $options = []) toma un opcional $callback función y opcional $options argumento.

La función de devolución de llamada toma un $router argumento desde el cual puede elegir qué rutas instalar como se muestra a continuación en su AuthServiceProvider.php que está habilitando una configuración más granular:

Passport::routes(function ($router) 
    $router->forAccessTokens();
    $router->forPersonalAccessTokens();
    $router->forTransientTokens();
);

Passport::tokensExpireIn(Carbon::now()->addMinutes(10));

Passport::refreshTokensExpireIn(Carbon::now()->addDays(10));

De esta manera solo creamos las rutas de pasaporte que necesitamos.

forAccessTokens(); permitirnos crear tokens de acceso.
forPersonalAccessTokens(); nos permite crear tokens personales, aunque no lo usaremos en este artículo. Por último,
forTransientTokens(); crea la ruta para actualizar tokens.

Si tu corres php artisan route:list puede ver los nuevos puntos finales instalados por Laravel Passport.

| POST | oauth/token         | LaravelPassportHttpControllers[email protected]
| POST | oauth/token/refresh | LaravelPassportHttpControllers[email protected]

Si estás contento con lo expuesto, tienes la libertad de dejar un ensayo acerca de qué le añadirías a este enunciado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *