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

Laravel 5.8登录后Auth::user()返回null问题求助

解决Laravel 5.8登录后Auth::user()返回null的问题

我之前处理过类似的会话丢失问题,结合你升级版本和引入Vue的背景,给你梳理几个针对性的排查方向:

1. 检查Web中间件组的重复应用

Laravel从5.4升级到5.8后,routes/web.php里的所有路由默认已经由RouteServiceProvider自动包裹在web中间件组中了(你可以去app/Providers/RouteServiceProvider.php里查看mapWebRoutes方法的实现)。你手动把路由再套一层['middleware' => ['web']]会导致中间件重复执行,很可能引发会话初始化异常。

建议修改你的web.php代码,去掉手动的web中间件组:

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::get('/browse', 'ListingController@index')->name('listings');

同时确认app/Http/Kernel.php里的web中间件组包含以下关键会话/认证中间件(顺序不能错):

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        // Laravel 5.6+新增的会话认证中间件,必须存在
        \Illuminate\Auth\Middleware\AuthenticateSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],
    // ...其他中间件组
];

2. 排查会话驱动与Cookie配置

会话存储权限/表结构

  • 如果用file会话驱动,确保storage/framework/sessions目录的权限正确(给服务器运行用户如www-data读写权限,执行chmod -R 755 storage/framework/sessions)。
  • 如果用database驱动,重新生成会话表迁移并执行:
    php artisan session:table
    php artisan migrate
    

Cookie相关配置

检查.env和config/session.php里的关键配置:

  • SESSION_DOMAIN:要和你的站点域名一致(比如本地开发用localhost,线上用你的真实域名),配置错误会导致浏览器拒绝携带会话Cookie。
  • SESSION_SAME_SITE:Laravel 5.8新增了这个配置,默认可能是strict,如果你的跳转场景有跨域/子域名情况,改成lax或者暂时注释掉测试。
  • SESSION_SECURE:本地开发不要设为true,否则只有HTTPS请求才会携带Cookie,导致会话丢失。

3. 彻底清除缓存残留

虽然你已经执行过清除命令,但再完整走一遍确保没有残留:

php artisan route:clear
php artisan config:clear
php artisan cache:clear
php artisan view:clear
composer dump-autoload

注意:开发环境不要用php artisan route:cache和php artisan config:cache,这两个命令会把配置和路由缓存成静态文件,可能导致修改的配置不生效。

4. 浏览器Cookie排查

打开浏览器开发者工具(F12),切换到Application标签,查看Cookies下的站点Cookie:

  • 登录后是否存在laravel_session(或者你自定义的会话Cookie名称)?
  • 跳转至/browse后,这个Cookie是否还存在?
  • 检查Cookie的Domain、Path、Expires/Max-Age是否符合预期。

5. Vue相关的潜在冲突

如果你的Vue应用用了前端路由(比如Vue Router),要确保后端路由和前端路由没有冲突。另外,如果Vue项目中用了axios发送请求,检查是否开启了withCredentials:

axios.defaults.withCredentials = true;

不过你这里是服务器端Auth::user()返回null,这个影响不大,但可以作为额外排查点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:09:10