You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.6中Auth::guard('api')->user()返回null问题求助

排查Laravel 5.6 API Token认证返回null的问题

咱们一步步来排查这个Auth::guard('api')->user()返回null的问题,这在Laravel 5.6的token认证场景里,通常是几个关键环节出了问题:

  • 检查用户表是否存在api_token字段
    首先得确认你的用户表(默认是users)里有api_token字段,类型建议是varchar(80)并且设置为唯一。如果没有的话,需要创建迁移添加这个字段:

    Schema::table('users', function (Blueprint $table) {
        $table->string('api_token', 80)->unique()->nullable()->default(null);
    });
    

    运行迁移后,记得给需要认证的用户生成并保存一个唯一的api_token(可以用Str::random(60)生成)。

  • 确认请求中正确携带了api_token
    Laravel 5.6的token认证默认支持两种传递方式:

    1. URL参数:比如http://your-domain/api/user/profile?api_token=你的用户token
    2. 请求头:使用标准的Authorization: Bearer 你的用户token格式(部分旧场景也支持直接传token,但推荐用Bearer规范)
      一定要确保传递的token和数据库中用户的api_token完全一致,没有空格、大小写错误或者截断的情况。
  • 检查路由是否配置了正确的中间件
    你的API路由需要确保已经应用了auth:api中间件——要么在路由定义时单独添加,要么放在包含该中间件的路由组里:

    // 单独给路由添加中间件
    Route::get('/user/profile', 'UserController@getUserProfile')->middleware('auth:api');
    
    // 或者放在路由组里
    Route::middleware(['api', 'auth:api'])->group(function () {
        Route::get('/user/profile', 'UserController@getUserProfile');
    });
    

    虽然你在方法里手动调用了Auth::guard('api')->check(),但正确配置中间件能确保认证逻辑被正确触发,也能避免手动判断的疏漏。

  • 验证认证配置文件的正确性
    打开config/auth.php,检查guards下的api配置是否正确:

    'guards' => [
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],
    

    要保证driver是token,provider指向正确的用户提供者(默认是users),同时确认providers部分的users配置指向你的User模型。

  • 检查User模型的继承关系
    确保你的User模型继承了Laravel的Authenticatable类,它已经实现了认证所需的接口:

    use Illuminate\Foundation\Auth\User as Authenticatable;
    
    class User extends Authenticatable
    {
        // 模型内容
    }
    

    如果是自定义模型,千万别漏掉这个继承。

  • 清除配置和路由缓存
    有时候缓存会导致配置不生效,运行以下命令清除缓存:

    php artisan config:clear
    php artisan route:clear
    

另外,顺便提一句:你代码里认证失败时返回的状态码是200,这不符合HTTP规范,认证失败应该返回401状态码,这样前端能更准确地处理错误场景,修改后的代码示例:

return response()->json([
    'errors' => ['status' => 401, 'detail' => 'Authentication error.'],
    'success' => false
], 401);

内容的提问来源于stack exchange,提问作者Ishaque Javed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:22:53