Laravel:未定义路由‘Login’?自定义登录路由配置问题
解决Laravel Auth中间件跳转自定义登录路由的问题
这个问题我之前也碰到过——Laravel默认的Auth中间件在用户未登录时,会自动尝试跳转到名为login的路由,要是你的登录路由用了自定义名称(比如frontend.guest.login),就会触发Route [login] not defined的错误。下面给你两种简单可行的解决办法:
方法一:修改默认的Authenticate中间件
直接修改Laravel自带的中间件,全局替换跳转目标:
- 打开项目里的
app/Http/Middleware/Authenticate.php文件 - 找到
redirectTo方法,把默认的route('login')改成你的自定义路由名称:
protected function redirectTo($request) { if (! $request->expectsJson()) { // 替换成你的自定义登录路由名称 return route('frontend.guest.login'); } }
方法二:通过AuthServiceProvider全局配置
不想修改中间件文件的话,可以在服务提供者里设置全局跳转规则:
- 打开
app/Providers/AuthServiceProvider.php文件 - 在
boot方法里添加以下代码:
use Illuminate\Support\Facades\Auth; public function boot() { $this->registerPolicies(); // 自定义未登录时的跳转路由 Auth::redirectTo(function () { return route('frontend.guest.login'); }); }
额外提醒
确保你的登录路由已经正确设置了名称,比如路由定义是这样的:
Route::get('/your-login-path', [LoginController::class, 'showLoginForm']) ->name('frontend.guest.login');
内容的提问来源于stack exchange,提问作者buwok
相关产品推荐
相关产品推荐

