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

Laravel登录重定向后Auth::check()返回false的问题解决

问题原因及解决方案

核心问题

你路由文件中的if(Auth::check())逻辑是在应用启动加载路由时执行的,而非用户请求到来时执行。此时Laravel还未处理用户请求、初始化会话,Auth::check()必然返回false,导致home路由从未被注册;同时登录/注册路由会一直被加载,这就出现了登录成功后重定向到/home时,路由层面无法识别已登录状态的问题。

修复方案

1. 修正路由写法,用中间件替代路由加载时的条件判断

不要在路由初始化阶段判断登录状态,改用Laravel内置的auth和guest中间件做权限控制:

<?php

use Illuminate\Support\Facades\Route;
use Inertia\Inertia;

Route::get('/', function () {
    return view('welcome');
});

// 仅允许已登录用户访问的home路由,通过auth中间件保护
Route::get('home', function() {
    return Inertia::render('home');
})->name('Home')->middleware('auth');

// 仅允许未登录用户访问的登录/注册路由,通过guest中间件保护
Route::group(['middleware' => 'guest'], function() {
    Route::group(base_path('routes/register.php'));
    Route::group(base_path('routes/login.php'));
});

2. 补充说明

  • auth中间件会自动拦截未登录用户,将其重定向到登录页面(可在app/Http/Kernel.php中配置跳转规则)。
  • guest中间件会自动拦截已登录用户,避免重复访问登录/注册页面。
  • 你控制器中的Auth::login($user)逻辑是正确的,登录后会话会被正确初始化,中间件能识别到登录状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:35:57