Laravel 9中Auth获取用户ID失败问题求助
解决Laravel 9中Auth::user()无法获取用户信息的问题
1. 修正Auth类的导入路径
你的代码导入的是控制器目录下的Auth类,而非Laravel官方的Auth门面,这是核心问题:
原导入代码:
use App\Http\Controllers\Auth;
替换为:
use Illuminate\Support\Facades\Auth;
2. 给路由添加认证中间件
确保只有登录用户能访问insert方法,在路由文件(如routes/web.php)中为对应路由加上auth中间件:
Route::post('/jobs/insert', [JobController::class, 'insert'])->middleware('auth');
如果有多个需要认证的路由,也可以用路由组统一处理:
Route::middleware('auth')->group(function () { Route::post('/jobs/insert', [JobController::class, 'insert']); // 其他需登录才能访问的路由 });
3. 增加空值判断避免报错
即使添加了中间件,也建议增加判断逻辑,防止意外情况导致Auth::user()返回null:
// 替换原有的user_id赋值代码 if (Auth::check()) { $job->user_id = Auth::user()->id; } else { Alert::error('错误', '请先登录操作'); return back(); }
4. 可选:通过Request对象获取用户
Laravel的Request对象可直接获取当前登录用户,无需导入Auth门面,代码可改为:
$job->user_id = $request->user()->id;
同样需要确保路由已添加auth中间件,否则$request->user()会返回null。
内容的提问来源于stack exchange,提问作者shandy pet
相关产品推荐
相关产品推荐

