我想这样做:
我做了什么:
已安装护照,在内核中添加了护照路径,将HasTokenApi添加到用户模型,Ran artisan命令用于安装护照。
我有一个客户端类型密码,客户端ID为2,代码为。
用户电子邮件:t@t.t传递:123456
这就是我获取访问令牌的方式:
$client = new GuzzleHttp\Client;
$url = "http://likebot.dev/";
$urlApi = "http://likebot.dev/api/";
$response = $client->post($url . 'oauth/token', [
'form_params' => [
'client_id' => 2,
// The secret generated when you ran: php artisan passport:install
'client_secret' => 'oG0mEGRiVsH6xzOjCIu5C63w1bIJfHUXQyoUF2Ni',
'grant_type' => 'password',
'username' => 't@t.t',
'password' => '123456',
'scope' => '*',
],
]);
// You'd typically save this payload in the session
$auth = json_decode((string) $response->getBody());
echo ($auth->access_token);
这是我在api.php路线中的路线:
Route::get('/user', function (Request $request) {
return response()->json($request->
})->middleware('auth:api');
这就是我使用访问令牌的方式:
$accessToken = 'access-token-here';
$response = $client->get($urlApi . 'user', [
'headers' => [
// 'Accept' => 'application/json',
'Authorization' => 'Bearer ' . $accessToken,
],
]);
// ee($response);
$user = json_decode((string) $response->getBody());
ee($user);
问题是,即使我返回一个字符串或其他任何东西,响应也是空的。当我使用访问令牌时从标题中取消注释// 'Accept' => 'application/json',
时,这将响应带有{'message': 'unauthorized'}
消息的401状态代码!
答案 0 :(得分:1)
对于有此问题的人!
在@jeffrey建议之后,我在阅读文档时开始使用JWT,它说Apache有一些Authorization标题的问题,我应该在Apache配置中添加一些代码!所以我把它添加到了.htaccess并解决了问题:
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]