我正在使用Laravel API身份验证的护照包。当我发布数据时,我收到错误:
401未经授权","错误":{"错误":"未经身份验证。"}。
我使用Auth::user()->id;
获取当前用户ID。
如何解决此错误?
答案 0 :(得分:4)
这段代码对我有帮助:
auth()->guard('api')->user()
答案 1 :(得分:3)
最简单的格式是auth('api')->user();
答案 2 :(得分:0)
在函数主体中使用Auth :: user()-> id时。您尚未登录。 请先调用登录api以获取令牌,然后将其设置为下一个API调用。
答案 3 :(得分:0)
您可以使用护照通过以下方式获得laravel api中的当前用户:
Route::get('/user', function (Request $request) {
return $request->user();
});
但是您得到401 Error
,这意味着您没有在Authorization标头中传递access_token或access_token已过期,因此您必须刷新令牌,
您必须在成功登录后获得的access_token
标头中传递Authorization
。
您的用户路线受护照保护,因此,在调用受Passport保护的路线时,您的应用程序的API使用者应在访问令牌中将 Bearer 令牌指定为<他们请求的strong>授权标头。
例如,当使用Guzzle HTTP库时,可以按以下方式传递它:
$response = $client->request('GET', '/api/logout', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$accessToken,
],
]);
答案 4 :(得分:0)
您需要执行一些步骤,并确保所有步骤都是正确的
Authorization: Bearer xxx-token-here-xxx
传递了正确的访问令牌一旦您确认上述操作正确完成,请确保您的路由受api Guard保护。如果您的路线没有受到保护,那么护照将无法保护他们
以下使用一组路线的示例
Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function()
{
Route::get("articles","ArticleController@read");
Route::post("articles","ArticleController@create");
});
答案 5 :(得分:0)
您也可以使用此:
$user = Auth::guard('api')->user();