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

Laravel 8 登录验证失败时如何重定向到自定义路由

Laravel 8 模态框登录验证失败跳转到指定登录页解决方案

核心逻辑说明

Laravel 默认的表单验证失败后会自动返回上一个访问地址,嵌入在其他页面的 Bootstrap 模态框登录表单提交失败时,上一个地址就是当前模态框所在页面,因此只会触发当前页刷新,不会跳转到独立登录页。通过重写验证失败的重定向规则即可实现需求。

操作步骤

  • 步骤1:修改认证控制器的验证失败重定向逻辑

    对应不同的认证脚手架,修改对应的控制器文件:
    1. 若使用 Laravel 原生 Auth 脚手架,打开 app/Http/Controllers/Auth/LoginController.php,新增以下方法:
    use Illuminate\Validation\ValidationException;
    
    protected function failedValidation(\Illuminate\Contracts\Validation\Validator $validator)
    {
        throw (new ValidationException($validator))
            ->redirectTo(route('login'));
    }
    
    1. 若使用 Laravel Breeze 认证体系,打开 app/Http/Controllers/AuthenticatedSessionController.php,在 store 方法中修改验证逻辑,用try catch捕获验证异常,手动指定重定向地址:
    use Illuminate\Validation\ValidationException;
    
    public function store(Request $request)
    {
        try {
            $request->validate([
                'email' => ['required', 'string', 'email'],
                'password' => ['required', 'string'],
            ]);
        } catch (ValidationException $e) {
            return redirect()->route('login')
                ->withErrors($e->validator)
                ->withInput();
        }
    
        // 原有登录校验逻辑保持不变
    }
    
  • 步骤2:登录页添加错误提示展示

    打开独立登录页对应的 Blade 视图文件,在合适位置添加错误提示代码:
    @if ($errors->any())
        <div class="alert alert-danger">
            @foreach ($errors->all() as $error)
                <p>{{ $error }}</p>
            @endforeach
        </div>
    @endif
    
    配置完成后,模态框提交登录信息验证失败时,就会自动跳转到/login页面并展示对应的错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:36:04