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

Laravel 10密码重置提交异常:点击后无反应无法跳转

Laravel密码重置第四部分无响应问题排查与修复

核心问题分析

点击重置按钮无反应,本质是表单提交参数不符合后端验证要求,请求被拦截但前端未正确显示错误提示,同时存在几处代码逻辑不匹配的问题。

1. 缺失Token隐藏字段

后端POST路由password.update要求提交token参数,但重置密码视图未包含该字段,直接导致验证失败,请求无有效反馈。
修复:在表单内添加Token隐藏字段,使用路由传递的$token变量:

<input type="hidden" name="token" value="{{ $token }}">

2. 密码输入框错误设置value属性

密码和确认密码输入框设置了value="{{ old('password') }}",既会明文暴露旧密码(不符合安全规范),也可能干扰验证逻辑。
修复:移除密码输入框的value属性:

<input id="password" type="password" name="password" />
<input id="password_confirmation" type="password" name="password_confirmation" />

3. Session提示键名不匹配

后端返回成功状态时用的是status键,但视图判断的是message键,导致成功提示无法正常显示。
修复:修改视图中的Session判断逻辑:

@if (Session::has('status'))
    <div class="alert alert-success" role="alert">
        {{ Session::get('status') }}
    </div>
@endif

4. 表单Action建议使用命名路由

硬写action='/reset-password'易因路由URL变更失效,改用Laravel命名路由更可靠。
修复:修改表单的action属性:

<form method="POST" action="{{ route('password.update') }}" class="contact-form">

修复后的完整视图代码

<x-layout1>
    <section class="form-section">
        <form method="POST" action="{{ route('password.update') }}" class="contact-form">
            @csrf
            <input type="hidden" name="token" value="{{ $token }}">

            @if (Session::has('status'))
                <div class="alert alert-success" role="alert">
                    {{ Session::get('status') }}
                </div>
            @endif

            <h2 class="form-h">RESET PASSWORD</h2>

            <div>
                <label for="email">Email</label>
                <input id="email" type="email" name="email" value="{{ old('email') }}" />
                @error('email')
                    <p style="color: red;font-size:1.6rem">{{ $message }}</p>
                @enderror
            </div>

            <div>
                <label for="password">Password</label>
                <input id="password" type="password" name="password" />
                @error('password')
                    <p style="color: red;font-size:1.6rem">{{ $message }}</p>
                @enderror
            </div>

            <div>
                <label for="password_confirmation">Confirm Password</label>
                <input id="password_confirmation" type="password" name="password_confirmation" />
                @error('password_confirmation')
                    <p style="color: red;font-size:1.6rem">{{ $message }}</p>
                @enderror
            </div>

            <button class="btn btn--form">Reset Password</button>
        </form>
    </section>
</x-layout1>

额外检查点

  • 确认路由闭包中已正确导入User模型、PasswordReset事件等依赖(如use App\Models\User;、use Illuminate\Auth\Events\PasswordReset;)。
  • 检查浏览器控制台是否有JavaScript报错,排查是否有前端脚本阻止表单提交。

内容的提问来源于stack exchange,提问作者Jasper Kenneth Samson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:35:14