Laravel Passport中如何将访问令牌附加到受保护API请求?
如何给受Laravel Passport保护的API请求附加访问令牌
Hey there! 既然你已经通过Postman生成了Laravel Passport的访问令牌,又用auth:api中间件保护了API路由,接下来只需要把令牌正确附加到请求里就能访问这些接口了,我给你分场景说说具体做法:
在Postman中发送请求时附加令牌
这是你当前用得最多的场景,有两种常用方式,优先推荐第一种:
- 使用Authorization请求头(标准做法)
- 打开你要测试的请求(比如GET
/prepare/) - 切换到Headers标签页
- 添加一条新的请求头:
- Key填
Authorization - Value填
Bearer 你的访问令牌(注意Bearer和令牌之间必须有一个空格)
- Key填
- 打开你要测试的请求(比如GET
- 使用URL查询参数(备选)
如果你临时测试,也可以直接在URL末尾拼接参数:
不过这种方式安全性较低,令牌容易在日志或传输过程中泄露,不推荐在生产环境使用。http://你的域名/api/prepare/?api_token=你的访问令牌
在代码中发送请求时附加令牌
如果是前端或者后端服务调用这些API,也对应不同的实现方式:
前端示例(以Axios为例)
可以全局配置让所有请求自动携带令牌,也可以给单个请求单独设置:
// 全局配置,所有Axios请求都会带上令牌 axios.defaults.headers.common['Authorization'] = 'Bearer ' + 你的访问令牌; // 单个请求单独设置 axios.post('/api/replace/', 你的请求数据, { headers: { 'Authorization': 'Bearer ' + 你的访问令牌 } });
后端示例(以PHP Guzzle为例)
如果是在其他服务或者Laravel内部调用这些API,可以这么写:
use GuzzleHttp\Client; $accessToken = '你的访问令牌内容'; $client = new Client(); $response = $client->get('http://你的域名/api/collage/', [ 'headers' => [ 'Authorization' => 'Bearer ' . $accessToken, ], ]);
补充说明:Laravel Passport的auth:api中间件默认会优先校验Authorization头里的Bearer令牌,只有当这个头不存在时,才会去检查api_token查询参数,所以用请求头的方式是最规范、最安全的选择。
内容的提问来源于stack exchange,提问作者Viktor
相关产品推荐
相关产品推荐

