首页 > 解决方案 > Laravel 电子邮件验证限制中间件过于严格

问题描述

我有一个用 Laravel 构建的 Web 应用程序,它是一个 API,在用户创建他们的帐户后,他们需要验证他们的电子邮件,他们通过点击前端上的一个按钮来执行此操作,该按钮向端点发送请求,现在,创建帐户是一个请求,然后登录的即时效果是一个新请求,但是由于某种原因,登录后尝试点击按钮发送电子邮件验证似乎会触发错误:

它似乎只在debug设置为时出现false,我试图了解油门中间件有什么问题?

这里是什么6,1意思?

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Verified;
use Illuminate\Foundation\Auth\VerifiesEmails;
use Tymon\JWTAuth\Facades\JWTAuth;
use Illuminate\Support\Facades\Redirect;
use App\Models\User;

class VerificationController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Email Verification Controller
    |--------------------------------------------------------------------------
    |
    | This controller is responsible for handling email verification for any
    | user that recently registered with the application. Emails may also
    | be re-sent if the user didn't receive the original email message.
    |
    */

    use VerifiesEmails;

    /**
     * Where to redirect users after verification.
     *
     * @var string
     */
    protected $redirectTo = 'my-url';

    /**
     * Mark the authenticated user's email address as verified.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     *
     * @throws \Illuminate\Auth\Access\AuthorizationException
     */
    public function verify(Request $request)
    {
        // sends the email, removed code for Stackoverflow as not needed
    }

    /**
     * Resend the email verification notification.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function resend(Request $request)
    {
        // sends the email, removed code for Stackoverflow as not needed
    }

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth:api')->only('resend');
        $this->middleware('signed')->only('verify');
        $this->middleware('throttle:6,1')->only('verify', 'resend');
    }
}

如果我是对的,这6,1意味着每分钟 6 个请求?所以不知道为什么它会立即以Too Many Attempts做出回应。

在本地我使用 Mailtrap,在生产中我使用 Mailgun。

标签: phplaravel

解决方案


推荐阅读