web-dev-qa-db-fra.com

Comment obtenir l'utilisateur actuel dans Laravel API en utilisant Passport?

J'utilise un passeport pour Laravel Authentification API. Lorsque je publie des données, j'obtiens une erreur:

401 Unauthorized "," error ": {" error ":" Unauthenticated. "}.

J'utilise Auth::user()->id; pour obtenir l'ID utilisateur actuel.

Comment résoudre cette erreur?

8
Karthik

Ce code m'a aidé:

auth()->guard('api')->user()
8
Gautam Patadiya

Le format le plus simple est auth('api')->user();

5
Rahul Reghunath

Lorsque vous utilisez Auth :: user () -> id dans le corps de votre fonction. Vous ne vous êtes pas connecté auparavant. Veuillez d'abord appeler l'API de connexion pour obtenir le jeton, puis définissez-le sur le prochain appel d'API.

0
Tung Nguyen

Vous devez suivre quelques étapes et vous assurer qu'elles sont toutes correctes

  1. Suivez toutes les instructions de configuration pour Laravel Passport et assurez-vous que le côté backend fonctionne correctement
  2. Lorsque vous effectuez vos demandes, assurez-vous que vous avez transmis un jeton d'accès correct via l'en-tête d'autorisation Authorization: Bearer xxx-token-here-xxx

Une fois que vous avez confirmé que ce qui précède est fait correctement, assurez-vous que vos itinéraires sont protégés par le garde api. Si vos itinéraires ne sont pas protégés, le passeport ne les sécurisera pas

Exemple ci-dessous utilisant un groupe de routes

Route::group(['prefix' => 'v1',  'middleware' => 'auth:api'], function()
{
    Route::get("articles","ArticleController@read");
    Route::post("articles","ArticleController@create");
});
0
Evans M.

Vous pouvez obtenir l'utilisateur actuel dans laravel api en utilisant un passeport comme ci-dessous:

Route::get('/user', function (Request $request) {
 return $request->user(); 
});

mais vous obtenez 401 Error cela signifie que vous ne transmettez pas access_token dans l'en-tête Autorisation ou que votre access_token a expiré, vous devez donc actualiser le jeton,

Vous devez passer access_token dans Authorization en-tête que vous avez obtenu après vous être connecté avec succès.

Votre itinéraire utilisateur est protégé par passeport. Lorsque vous appelez des itinéraires protégés par Passport, les consommateurs d'API de votre application doivent spécifier leur jeton d'accès en tant que Jeton porteur dans l'en-tête d'autorisation de leur demande.

Par exemple, lorsque vous utilisez la bibliothèque HTTP Guzzle, vous pouvez la transmettre comme ci-dessous:

$response = $client->request('GET', '/api/logout', [
    'headers' => [
        'Accept' => 'application/json',
        'Authorization' => 'Bearer '.$accessToken,
    ],
]);

du doc ​​ passeport laravel passant jeton d'accès

0
Haritsinh Gohil