Ana içeriğe atla
Ribaunt’un ribaunt/widget-react adresindeki React sarmalayıcısı, yalnızca tarayıcıya özgü web bileşenini istemcide dinamik olarak içe aktararak SSR korumalarını otomatik olarak ele alır. Bileşen dosyanıza 'use client' ekleyin, RibauntWidget’ı içe aktarın ve hazırsınız — ek yapılandırma gerekmez.
RIBAUNT_SECRET değerini asla NEXT_PUBLIC_ öneki ile kullanmayın.
Bunu yapmak, gizli anahtarı istemci paketinize gömer ve her ziyaretçiye açar. RIBAUNT_SECRET değerini, yalnızca sunucuda kalmasını sağlamak için .env.local dosyasında NEXT_PUBLIC_ öneki olmadan tutun.

İstemci bileşeni kurulumu

Bir istemci bileşeni oluşturun ve RibauntWidget’ı yerleştirin. Sarmalayıcı dinamik içe aktarmayı dahili olarak ele aldığı için, onu next/dynamic içine sarmanız gerekmez.
'use client';

import { useRef } from 'react';
import RibauntWidget, { type RibauntWidgetHandle } from 'ribaunt/widget-react';

export default function ContactForm() {
  const widgetRef = useRef<RibauntWidgetHandle>(null);

  return (
    <form>
      <RibauntWidget
        ref={widgetRef}
        challengeEndpoint="/api/captcha/challenge"
        verifyEndpoint="/api/captcha/verify"
        autoVerify={true}
        solveTimeout={15000}
        onVerify={(detail) => console.log('Verified:', detail.solutions)}
        onError={(detail) => console.error('Failed:', detail.error)}
        onReady={(detail) => console.log('Ready:', detail.state)}
      />
      <button type="submit">Submit</button>
    </form>
  );
}
next/dynamic içine SARMAYINribaunt/widget-react sarmalayıcısı dinamik içe aktarmayı zaten dahili olarak ele alır. Ekstra bir next/dynamic çağrısı eklemek gereksizdir ve çift yüklemeye neden olabilir.

API yolları

Yukarıdaki istemci bileşeni /api/captcha/challenge ve /api/captcha/verify adreslerini çağırır. Challenge’lar oluşturmak ve çözümleri doğrulamak için bu sunucu tarafı uç noktalarını oluşturmanız gerekir. Tam yol işleyici uygulaması için Next.js sunucu kılavuzu sayfasına bakın.

Önemli hususlar

  • Her zaman 'use client' kullanınRibauntWidget tarayıcıda işlenir ve tarayıcı API’lerine dayanır.
  • next/dynamic kullanmayın — sarmalayıcı dinamik içe aktarmayı kendisi ele alır; next/dynamic eklemek gereksizdir.
  • RIBAUNT_SECRET değerini NEXT_PUBLIC_ aracılığıyla açmayın — gizli anahtar yalnızca sunucu tarafında kalmalıdır.
  • HTTPS veya localhost kullanın — tarayıcı çözümü, güvenli bağlamlarla sınırlı olan Web Crypto API’sine bağlıdır. Düz yerel ağ HTTP URL’leri (örneğin http://192.168.x.x) çalışmayacaktır.
  • Sunucusuz veya edge dağıtımları için — varsayılan tekrar oynatma önleme, sunucusuz örnekler arasında paylaşılmayan süreç yerel belleğini kullanır. Bu ortamlarda tekrar oynatma saldırılarını önlemek için atomik bir dağıtık depo ile replayPrevention: 'remote' ayarlayın.