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

Laravel 6.x Auth脚手架:verification.resend路由无法触发VerificationController@resend?

解决Laravel 6.x VerificationController@resend方法无法触发的问题

根据你描述的场景,我整理了几个最可能的原因和对应的解决办法,你可以逐一排查:

1. 表单缺少CSRF令牌(最常见原因)

Laravel的所有POST表单必须包含CSRF令牌,否则请求会被VerifyCsrfToken中间件直接拦截,根本无法到达控制器方法。你的表单代码里没有添加令牌,这大概率是问题所在。

修改前端表单,添加@csrf指令:

<form action="{{route('verification.resend')}}" method="post">
    @csrf
    <button type="submit" class="btn btn-primary">@lang('resend')</button>
</form>

2. 检查限流中间件是否触发

你的路由配置了throttle:6,1,意味着1分钟内最多允许6次请求。如果你短时间内多次点击按钮,可能已经触发了限流,导致请求被拦截。

  • 等待1分钟后再尝试提交表单
  • 或者暂时移除路由中的throttle中间件,测试是否能触发resend方法

3. 确认VerificationController的继承与Trait使用

Laravel 6.x的VerificationController默认应该引入Illuminate\Foundation\Auth\VerifiesEmails trait,这个trait已经内置了resend方法。如果你自行添加了resend方法,需要确保:

  • 控制器正确引入了该trait:
use Illuminate\Foundation\Auth\VerifiesEmails;
use Illuminate\Http\Request;

class VerificationController extends Controller
{
    use VerifiesEmails;

    // 你的其他代码...

    public function resend(Request $request)
    {
        // 你的自定义逻辑
        dd('触发resend方法');
    }
}
  • 确认控制器的命名空间正确(App\Http\Controllers\Auth\),与路由指向的完全一致

4. 清除路由缓存

如果之前执行过php artisan route:cache,修改路由或控制器后可能缓存未更新,导致请求无法正确映射到新的方法。执行以下命令清除缓存:

php artisan route:clear

5. 检查请求状态(通过浏览器开发者工具)

打开浏览器的开发者工具(F12),切换到Network标签,点击提交按钮后查看请求的状态码:

  • 如果是419 Page Expired:确认是CSRF令牌问题
  • 如果是302 Found:检查是否被auth中间件重定向(比如用户实际未登录)
  • 如果是200 OK但没执行dd:检查控制器方法是否有语法错误,或者是否有其他全局中间件拦截

排查完这些点,应该就能解决resend方法不触发的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 23:47:37