You need to enable JavaScript to run this app. Laravel 认证失败时如何设置重定向到 login.blade.php 登录页面
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 认证失败时如何设置重定向到 login.blade.php 登录页面

实现方案

完全可以实现,只需修改登录验证失败后的重定向规则即可,具体操作如下:

  • 如果你使用的是Laravel自带的认证系统,直接修改app/Http/Controllers/Auth/LoginController.php,重写默认的登录失败响应方法:
<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException; // 需导入该类

class LoginController extends Controller
{
    use AuthenticatesUsers;

    protected $redirectTo = '/home';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    // 新增以下重写方法
    protected function sendFailedLoginResponse(Request $request)
    {
        throw ValidationException::withMessages([
            $this->username() => [trans('auth.failed')],
            // 如果有其他自定义验证错误也可以在这里追加
        ])->redirectTo(route('login')) // 固定重定向到登录页路由
          ->withInput($request->only($this->username(), 'remember')); // 可选:保留用户已输入的账号、记住我选项
    }
}

备注:如果你的登录路由没有设置name为login,请将上述代码中的route('login')替换为你实际的登录页地址,比如url('/login')。

  • 如果你是自定义编写的登录验证逻辑,只需将验证失败后的返回逻辑从back()改为跳转登录页即可,示例如下:
// 验证失败后不要用back()
// return back()->withErrors($validator)->withInput();
// 替换为
return redirect()->route('login')->withErrors($validator)->withInput();
  • 你已经在login.blade.php中编写的错误展示代码无需修改,只要登录路由对应的页面渲染这段代码,所有重定向过来的验证错误都会正常显示。

修改完成后测试:从头部登录表单输入错误的账号密码,就会自动跳转到专门的登录页并展示对应的错误提示。

内容的提问来源于stack exchange,提问作者Hasan ABLAK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 18:15:05