Laravel 8强化登录表示429个请求太多

Laravel 8强化登录表示429个请求太多,laravel,laravel-8,fortify,Laravel,Laravel 8,Fortify,我遇到了一个与429个请求太多相关的问题。我已经使用了Laravel fortify,我的网络路线如下 Route::get('/', function () { return view('welcome'); }); Route::get('/dashboard','DashboardController@dashboardView') ->name('dashboard')->middleware('auth'); 问题是间歇性出现的,成功登录后,我重定向到仪

我遇到了一个与429个请求太多相关的问题。我已经使用了Laravel fortify,我的网络路线如下

Route::get('/', function () {
    return view('welcome');
});

Route::get('/dashboard','DashboardController@dashboardView')
    ->name('dashboard')->middleware('auth');
问题是间歇性出现的,成功登录后,我重定向到仪表板,如果我立即点击“注销”并立即尝试登录,则会发出429个太多的请求,并且在地址栏中显示URL。现在,如果我在那里等待一秒钟并刷新页面,它将重定向到仪表板页面

我在网上搜索过,每个人都在谈论油门,我不认为这是解决办法。请帮帮我。
谢谢。

我今天偶然发现了同样的问题,并进行了一些调试。注册/login路由时,Fortify会将light\Routing\Middleware\ThrottleRequests:login中间件应用于该路由。这意味着,对于该路由的每个请求,ThrottleRequests中间件将调用该指定密钥的RateLimiter实例。显然,Fortify没有为登录密钥注册速率限制

由于RateLimiter实例的$limiters属性中缺少键,ThrottleRequests中间件使用其默认的回退,它不处理边缘情况,该键应该有一个速率限制,但没有。非常好。$maxtures变量设置为0,将导致不稳定的速率限制行为

我觉得这是Fortify中的一个错误,因为在\Laravel\Fortify\Actions\EnsureLoginIsNotThrottled操作中也发生了速率限制,该操作在\Laravel\Fortify\Http\Controllers\AuthenticatedSessionController控制器中调用。不过,我没有在新安装的Laravel上检查这一点,所以我不想在这里得出结论

总之,长话短说:作为一种解决方法,您只需在一些提供商中为登录密钥注册一个速率限制器,例如。GAppServiceProvider或AuthServiceProvider:

公共函数启动 { RateLimitor::forlogin,函数{ 限制:许可证5; }; } 编辑:
我刚刚意识到登录密钥的速率限制实际上是由FortifyServiceProvider类中的Fortify提供的。如果您碰巧遇到与上面讨论的问题类似的问题,请确保已将FortifyServiceProvider类添加到config/app.php中的providers数组中。

感谢您宝贵的回复,我已通过在FortifyServiceProvider类中执行此操作解决了问题。在调用登录视图之前,在引导方法中。Fortify::LoginView函数{Artisan::调用'cache:clear';返回视图'forepart.login.user_login';};虽然这会起作用,但在每个用户登录时破坏缓存可能不是最好的方法。