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

Laravel 5.6登录页面验证错误信息无法显示求助

解决Laravel 5登录错误信息不显示的问题

看起来你的问题根源出在Kernel.php的中间件配置上——你把web中间件组里的核心中间件重复放到了全局$middleware数组里,这会导致中间件重复执行,引发session相关的冲突,最终让错误信息无法传递到视图层。

问题分析

在Laravel中,web中间件组专门负责处理网页请求的核心功能(比如session管理、csrf验证、错误信息共享),而全局$middleware是所有请求都会执行的通用中间件。你现在把EncryptCookies、StartSession、ShareErrorsFromSession这些web场景专属的中间件同时加到了全局中间件里,这会导致这些中间件被执行两次,可能会清空或者覆盖session里的错误信息,让你的Blade模板拿不到错误内容。

解决方案

修改Kernel.php,把全局$middleware里属于web中间件组的重复项移除,只保留全局必需的中间件:

protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
    \App\Http\Middleware\TrimStrings::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    \App\Http\Middleware\TrustProxies::class,
];

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        // \Illuminate\Session\Middleware\AuthenticateSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],
    'api' => [
        'throttle:60,1',
        'bindings',
    ],
];

额外检查点

  1. 确认你的LoginController继承了AuthenticatesUsers trait(Laravel默认的登录控制器都会继承这个),即使你没重写sendFailedLoginResponse,这个trait的默认实现也会把登录失败的错误信息存入session。
  2. 确保你的登录表单的POST请求正确指向了login路由,并且csrf_field()已经正确生成(从你的blade代码看这部分是没问题的)。

做完这些修改后,重新测试登录失败的场景,错误信息应该就能正常显示了。

内容的提问来源于stack exchange,提问作者Gündoğdu Yakıcı

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:46:55