Rumah > rangka kerja php > Laravel > Artikel yang menerangkan secara terperinci cara menggunakan perisian tengah pendikit dalam laravel8

Artikel yang menerangkan secara terperinci cara menggunakan perisian tengah pendikit dalam laravel8

藏色散人
Lepaskan: 2022-12-05 15:36:43
ke hadapan
2648 orang telah melayarinya

Artikel ini akan memberi anda pengetahuan yang berkaitan tentang Laravel dan perisian tengah pendikit Kandungan utama adalah untuk mengajar anda cara menggunakan perisian tengah pendikit dalam laravel8.

perisian tengah pendikit sekatan akses laravle8

pengenalan perisian tengah pendikit

Had kekerapan sering digunakan dalam API untuk Hadkan kekerapan permintaan kepada API tertentu oleh peminta bebas. Setiap API memilih jangka masa had frekuensinya sendiri, GitHub memilih 1 jam dan perisian tengah Laravel memilih 1 minit.

Contohnya: pendikit:60,1, yang menetapkan had kekerapan kepada 60 kali seminit Jika IP melebihi had ini dalam masa satu minit, pelayan akan mengembalikan respons 429 Terlalu Banyak. [Pembelajaran yang disyorkan: tutorial video laravel]

Menggunakan perisian tengah pendikit dalam laravel8

Kami biasanya menggunakan perisian pertengahan pendikit di sini. Buat had kadar dengan tertentu syarat, sebagai contoh, mengehadkan bilangan akses seminit untuk IP yang tiada dalam senarai putih IP. Berbanding sebelum ini, perisian tengah pendikit dalam laravel8 mempunyai kaedah penggunaan yang lebih mudah.

Pertama sekali, kita dapat melihat bahawa terdapat definisi sedemikian dalam fail Kernel.php

    /**
     * The application's route middleware groups.
     *
     * @var array<string, array<int, class-string|string>>
     */
    protected $middlewareGroups = [
        &#39;web&#39; => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
        &#39;api&#39; => [
            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            &#39;throttle:api&#39;,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];
    /**
     * The application&#39;s route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array<string, class-string|string>
     */
    protected $routeMiddleware = [
        &#39;auth&#39; => \App\Http\Middleware\Authenticate::class,
        &#39;auth.basic&#39; => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        &#39;cache.headers&#39; => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        &#39;can&#39; => \Illuminate\Auth\Middleware\Authorize::class,
        &#39;guest&#39; => \App\Http\Middleware\RedirectIfAuthenticated::class,
        &#39;password.confirm&#39; => \Illuminate\Auth\Middleware\RequirePassword::class,
        &#39;signed&#39; => \Illuminate\Routing\Middleware\ValidateSignature::class,
        &#39;throttle&#39; => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        &#39;verified&#39; => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
    ];
Salin selepas log masuk

Jelas sekali bahawa 'throttle' ditakrifkan dalam laravel8 => IlluminateRoutingMiddlewareThrottleRequests:: class, Rangka kerja telah ditakrifkan, dan throttle:api digunakan dalam api.

Sudah tentu, penggunaan umum mungkin untuk mengulas throttle:api di sini, mencipta middleware pendikit baharu atau terus menggunakan throttle:60,1 dalam penghalaan.

Bagaimana jika saya perlu membuat beberapa pertimbangan yang rumit Contohnya, saya mempunyai banyak senarai putih IP yang ingin saya kecualikan tanpa had kadar, atau bagaimana jika terdapat pengguna VVVIP yang tidak mengehadkan kadar?

Pada masa ini, kita boleh mencari fail AppProvidersRouteServiceProvider.php dalam laravel8 Di bahagian bawah fail kita boleh melihat tulisan ini

  /**
     * Configure the rate limiters for the application.
     *
     * @return void
     */
    protected function configureRateLimiting()
    {
        RateLimiter::for(&#39;api&#39;, function (Request $request) {
            return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
        });
    }
Salin selepas log masuk

Api yang ditakrifkan di sini ialah di atas dalam Kernel. .php Pendikit:api yang digunakan dalam fail. Di sini, kami boleh menetapkan syarat pengehad kadar tersuai, contohnya, mengehadkan akses IP di luar senarai putih IP pengguna kepada 60 kali sejam dan senarai putih boleh mengakses 1,000 kali setiap kali

RateLimiter::for(&#39;apiHour&#39;, function (Request $request) {
            if(!in_array($request->ip(), config(&#39;ip.whitelist&#39;))){
                return Limit::perHour(60)->by($request->ip());
            }else{
                return Limit::perHour(1000)->by($request->ip());
            }
        });
Salin selepas log masuk

Sudah tentu, jangan' t lupa untuk mencipta fail ip.php baharu dalam folder konfigurasi

return [
    &#39;whitelist&#39; => [
        &#39;192.168.0.1&#39;,
    ],
];
Salin selepas log masuk

:heart: Peringatan hangat: Apabila menggunakan penghalaan antara muka api, jika anda ingin menggunakan pendikit tersuai:apiHour Jangan lupa untuk komen keluar throttle:api dalam Kernel.php asal!

Akhirnya kami dengan senang hati boleh menggunakan middleware kawalan kadar tersuai dalam penghalaan

Route::group([
    &#39;middleware&#39; => [&#39;throttle:apiHour&#39;]
], function ($router) {
   Route::get(&#39;user&#39;, function (Request $request) {
       return $request->user();
   });
});
Salin selepas log masuk

Di atas adalah ringkasan saya tentang masalah menggunakan penilai pendikit tersuai dalam laravel8, seperti Jika anda mempunyai sebarang pertanyaan, anda boleh membetulkannya pada bila-bila masa. Terima kasih kerana menonton!

Artikel ini dicetak semula, alamat asal: https://learnku.com/articles/73728

Atas ialah kandungan terperinci Artikel yang menerangkan secara terperinci cara menggunakan perisian tengah pendikit dalam laravel8. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan