簡體   English   中英

Laravel 9 不正確的速率限制

[英]Laravel 9 incorrect rate limit

我剛剛安裝了 Laravel 9 和 Laravel Fortify。 但是,登錄功能的速率限制不正確。

FortifyServiceProvider.php

public function boot()
{
    Fortify::createUsersUsing(CreateNewUser::class);
    Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class);
    Fortify::updateUserPasswordsUsing(UpdateUserPassword::class);
    Fortify::resetUserPasswordsUsing(ResetUserPassword::class);

    RateLimiter::for('login', function (Request $request) {
        $email = (string) $request->email;

        return Limit::perMinute(5)->by($email.$request->ip());
    });

    RateLimiter::for('two-factor', function (Request $request) {
        return Limit::perMinute(5)->by($request->session()->get('login.id'));
    });
}

如您所見,它每分鍾顯示五個請求。 但是,每當我在第一次請求后嘗試錯誤登錄時,它一直給我一個錯誤429: Too Many Requests 這是因為它只允許我登錄一次。

我嘗試了兩個 PHP 版本,8.0 和 8.1.2。

更新:

我還嘗試了 Laravel v8。

開發環境:Laragon 也嘗試過使用 Laradock (docker) 但仍然是同樣的問題。

我遇到了同樣的問題並修復了它。

在我的情況下,我更改了默認路由名稱。 /login變成/sign-up/two-factor變成/account-two-factor

所以我更改了FortifyServiceProvider.php文件中的速率限制器名稱。

RateLimiter::for('sign-in', function (Request $request) {
    $email = (string) $request->email;
    error_log($email.$request->ip());
    return Limit::perMinute(50)->by($email.$request->ip());
});

RateLimiter::for('account-two-factor', function (Request $request) {
    return Limit::perMinute(50)->by($request->session()->get('login.id'));
});

我需要更改config/fortify.php limiters數組

'limiters' => [
        'login' => 'login',
        'two-factor' => 'two-factor',

    ],

'limiters' => [
        'sign-in' => 'sign-in',
        'account-two-factor' => 'account-two-factor',

    ],

並更改我在routes/fortify.php中的自定義路由名稱

$limiter = config('fortify.limiters.login');
$twoFactorLimiter = config('fortify.limiters.two-factor');

$limiter = config('fortify.limiters.sign-in');
$twoFactorLimiter = config('fortify.limiters.account-two-factor');

我的收獲是默認值應該開箱即用,我的錯誤是我重命名了RateLimiter::for(...)部分並破壞了配置中的密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM