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

Laravel 5.5路由报错:InvalidArgumentException Route [login]未定义

解决Laravel 5.5中“Route [login] not defined”错误

这个问题的核心原因是Laravel的认证系统默认依赖名为login的路由来跳转未认证请求,但你的登录路由/signin并没有设置这个名称,或者你没有正确使用自己自定义的认证中间件。下面提供两种可行的解决方法:

方法一:给登录路由添加login名称(推荐,符合框架规范)

Laravel的认证组件(包括默认的auth中间件)会通过route('login')来生成登录页面的跳转链接,所以你只需要给/signin路由加上名称即可:

修改web.php中的登录路由:

Route::get('/signin', 'signinController@index')->name('login');

这样框架就能找到对应的登录路由,错误自然就消失了。这种方法的好处是,后续如果用到密码重置等Laravel自带的认证功能,也能正常工作,因为它们都依赖这个login路由名称。

方法二:确保使用你自定义的认证中间件

如果你想继续使用自己写的Authenticate中间件(跳转到/signin),需要确保路由中使用的是你自定义的中间件,而不是框架默认的auth中间件:

  1. 注册自定义中间件
    打开app/Http/Kernel.php,在$routeMiddleware数组中添加你的自定义中间件:
protected $routeMiddleware = [
    // ... 其他中间件
    'custom-auth' => \App\Http\Middleware\Authenticate::class,
];
  1. 替换路由中的中间件
    把所有需要认证的路由里的->middleware('auth')替换成->middleware('custom-auth'),比如:
// 原路由
Route::get('/logout', ['uses'=>'signinController@logout'])->middleware('auth');
// 修改后
Route::get('/logout', ['uses'=>'signinController@logout'])->middleware('custom-auth');

// 其他需要认证的路由同理替换

这样系统就会使用你自己写的中间件逻辑,直接跳转到/signin,不会再去寻找login路由。

额外检查

确认你的自定义Authenticate中间件文件位于app/Http/Middleware目录下,并且命名空间正确:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class Authenticate
{
    public function handle($request, Closure $next)
    {
        if(Auth::check()){ // 规范写法为小写check(),不影响功能但更符合代码规范
            return $next($request);
        } else{
            return redirect('/signin');
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:06:23