app/ dizini, Next.js 13+) hem de Pages Router (pages/api/, Next.js 12 ve altı) aşağıda ele alınmıştır.
Ortam kurulumu
Gizli anahtarınızı.env.local dosyasına ekleyin. Next.js bu dosyayı otomatik olarak yükler ve değerlerini yalnızca sunucu tarafında tutar:
App Router (Next.js 13+)
Aşağıda gösterilen iki yol işleyici dosyasını oluşturun. Her dosya adlandırılmış bir HTTP metodu işlevi (GET veya POST) dışa aktarır — App Router kuralı budur.
- challenge/route.ts
- verify/route.ts
createChallenge(5, 4, 60), her biri 60 saniye geçerli olan, zorluk seviyesi 5 olan 4 imzalı challenge tokeni oluşturur. İşlev bir JWT dizeleri dizisi döndürür; bunu { challenges } içine sarmak, Ribaunt widget’ının beklediği yanıt sözleşmesiyle eşleşir.Pages Router (Next.js 12 ve altı)
pages/api/ dizinini kullanıyorsanız, aşağıdaki iki işleyici dosyasını oluşturun. Her biri NextApiRequest ve NextApiResponse alan varsayılan bir asenkron işlev dışa aktarır.
- pages/api/captcha/challenge.ts
- pages/api/captcha/verify.ts
Sunucusuz ve edge dağıtımları
Varsayılan
replayPrevention: 'local' modu, kullanılan token ID’lerini süreç içi bir Map içinde saklar. Uygulamanız sunucusuz işlevler olarak veya birden fazla örnek üzerinde çalıştığında, her soğuk başlatma boş bir depo ile başlar, böylece bir örneğe karşı çözülen bir token başka bir örneğe karşı tekrar oynatılabilir.Örnekler arası tekrar oynatmaları önlemek için, atomik bir dağıtık depo tarafından desteklenen bir replayStore adaptörü (örneğin SET NX işlemli Redis) ile birlikte replayPrevention: 'remote' iletin:replayStore, belirli bir jti ilk kez görüldüğünde atomik olarak true ve sonraki herhangi bir çağrıda false döndüren bir consume(jti: string, expiresAt: number): Promise<boolean> yöntemi uygulamalıdır.