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?
Ce code m'a aidé:
auth()->guard('api')->user()
Le format le plus simple est auth('api')->user();
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.
Vous devez suivre quelques étapes et vous assurer qu'elles sont toutes correctes
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");
});
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