Laravel Jetstream修改默认登录路由URL为首页路由
修改Jetstream登录路由为首页/并移除/login路由
方法一:快速调整(仅替换GET登录页面)
这种方式适合只需要把首页设为登录页,但保留原POST提交路由的场景:
- 打开
routes/web.php,添加以下代码:
// 移除Jetstream默认的GET /login路由 Route::forgetRoute('login'); // 将首页/设为登录视图,沿用原路由名称保证认证逻辑正常 Route::get('/', function () { return view('auth.login'); })->name('login');
- 此时访问
/会显示登录页面,/login的GET路由已被移除,但原POST/login的登录提交路由仍存在。
方法二:彻底替换所有登录路由(推荐)
Jetstream底层依赖Fortify处理认证,直接修改Fortify的路由配置可彻底替换所有登录相关路由:
- 打开
app/Providers/FortifyServiceProvider.php,在boot方法中添加路由自定义逻辑:
use Laravel\Fortify\Fortify; public function boot() { // 指定登录视图(保持原有视图不变) Fortify::loginView(function () { return view('auth.login'); }); // 自定义登录路由,替换默认的/login Fortify::routes(function ($router) { // 将GET /设为登录页面,命名为login $router->get('/', [\Laravel\Fortify\Http\Controllers\AuthenticatedSessionController::class, 'create'])->name('login'); // 将POST /设为登录提交路由,命名为login.store $router->post('/', [\Laravel\Fortify\Http\Controllers\AuthenticatedSessionController::class, 'store'])->name('login.store'); // 移除原有的/login相关路由 $router->forgetRoute('login'); $router->forgetRoute('login.store'); }); // 保留Jetstream其他默认路由(如注册、密码重置等,不需要可删除对应行) Fortify::registerRoutes(); Fortify::passwordResetRoutes(); }
- 保存后,访问
/会显示登录页面,提交表单直接提交到/,原/login的GET和POST路由均被移除。
关键注意点
- 必须保留路由名称
login和login.store,Laravel的认证中间件(如auth)会依赖这些名称完成未登录跳转、表单提交等逻辑。
内容的提问来源于stack exchange,提问作者moemen saadeh
相关产品推荐
相关产品推荐

