Laravel Passport配置完成后API请求返回401 Unauthenticated求助
Laravel Passport API请求返回401 Unauthenticated 排查方案
- 检查User模型是否引入Passport trait
确认App\Models\User类中已引入Laravel\Passport\HasApiTokenstrait,示例代码如下:use Laravel\Passport\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; // 其余模型代码 } - 检查API路由是否绑定正确的认证中间件
所有需要身份认证的API路由必须套在auth:api中间件组下,示例配置如下:// routes/api.php Route::middleware('auth:api')->group(function () { // 你的业务接口路由 }); - 检查请求头格式是否规范
确认请求头Authorization值格式为Bearer 你生成的access_token,Bearer首字母必须大写,和token之间必须有且只有一个空格,token前后不能有多余的换行、空格字符。 - 检查AuthServiceProvider是否引入Passport门面
确认app/Providers/AuthServiceProvider.php顶部已引入Passport门面:use Laravel\Passport\Passport; - 检查token有效期配置是否生效
你当前配置中使用了自定义的auth.token_expiration配置项,先确认config/auth.php中已正确配置对应数值,临时测试可替换为固定有效期验证是否是过期问题:Passport::tokensExpireIn(now()->addDay()); Passport::refreshTokensExpireIn(now()->addDays(7)); - 检查web服务器是否正常转发Authorization头
你已配置Apache的.htaccess规则,若使用Nginx需在站点配置中添加以下规则:
可临时添加测试路由验证头是否正常被Laravel接收:fastcgi_pass_header Authorization;
请求该接口若返回为空,则说明服务器没有正常转发Authorization头,优先排查web服务器配置。// routes/api.php 无需加认证中间件 Route::get('/test-header', function () { return request()->header('Authorization'); }); - 清理框架缓存
执行以下命令清理配置、路由缓存,避免旧配置未生效:php artisan config:clear php artisan route:clear php artisan cache:clear
内容的提问来源于stack exchange,提问作者None
相关产品推荐
相关产品推荐

