Belgeler / Hızlı Başlangıç
Belgeler

Hızlı Başlangıç

Sıfırdan korumalı forma beş dakikadan kısa sürede.

1. Paketi yükleyin

dotnet add package CWaptcha

2. Gizli anahtarı ayarlayın

SecretKey'i asla kaynak kontrolüne commit etmeyin. Geliştirmede user-secrets, prodüksiyonda ortam değişkenleri kullanın.

# Development
dotnet user-secrets set "CWaptcha:SecretKey" "your-32-char-minimum-secret-here"

# Production (IIS — set in system environment variables or web.config)
CWaptcha__SecretKey=your-secret-here

3. Yapılandırın (appsettings.json)

{
  "CWaptcha": {
    "LicenseKey":        "CW-...",         // from CWaptcha.KeyGen
    "Domain":            "example.com",    // must match the licensed domain
    "NonceTtlSeconds":   300,
    "HoneypotFieldName": "cw_hp_email",
    "ProtectedPaths":    [ "/Contact" ],
    "RequireHttps":      true
  }
}

Middleware'in otomatik olarak yakalamasını istediğiniz POST rotalarını ProtectedPaths'e ekleyin. Controller action'larında [CWaptchaValidation] kullanıyorsanız boş bırakın.

LicenseKey'i kaynak kontrolünden uzak tutun — geliştirmede user-secrets veya prodüksiyonda ortam değişkeni (CWaptcha__LicenseKey) kullanın. Anahtar olmadan CWaptcha bir uyarı kaydeder ancak formları korumaya devam eder.

4. Kayıt edin ve kullanın (Program.cs)

using CWaptcha.AspNetCore.Extensions;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddCWaptcha(builder.Configuration.GetSection("CWaptcha"));

var app = builder.Build();
app.UseStaticFiles();
app.UseCWaptcha();   // ← before MapRazorPages / MapControllers
app.MapRazorPages();
app.Run();
Klasik hosting (Startup.cs — Umbraco 13)
// Startup.cs — ConfigureServices
services.AddCWaptcha(Configuration.GetSection("CWaptcha"));

// Startup.cs — Configure (BEFORE app.UseUmbraco())
app.UseCWaptcha();
UseCWaptcha()'yı app.UseUmbraco()'dan önce çağırın; aksi hâlde Umbraco'nun yönlendiricisi CWaptcha endpoint'lerini kapatır.

5. Betiği ekleyin ve formunuzu koruyun

<!-- Add data-cwaptcha to the form you want to protect -->
<form method="post" data-cwaptcha>
    <input name="Name"  required />
    <input name="Email" type="email" required />
    <button type="submit">Send</button>
</form>

<!-- Include cwaptcha.js before </body> -->
<script src="/cwaptcha/cwaptcha.js" data-honeypot="cw_hp_email"></script>

Hepsi bu. Middleware POST isteğini yakalayacak, CAPTCHA'yı doğrulayacak ve geçerli istekleri işleyicinize iletecektir. Geçersiz istekler otomatik olarak 400 yanıtı alır.

jQuery AJAX kullanıyor musunuz? Formunuza data-cwaptcha-badge ekleyin — sayfa yüklendiğinde gönder düğmesinin yanında kalkan rozeti otomatik olarak görünür, ekstra JavaScript gerekmez.

6. Güven rozeti (isteğe bağlı)

Formunuza bir rozet özniteliği ekleyin; sayfa yüklendiğinde gönder düğmesinin yanında kalkan rozeti görünür — ekstra JavaScript gerekmez. Standart formlar ve jQuery AJAX formlarında kullanılabilir.

<!-- neutral gray, centered under button row (default) -->
<form method="post" data-cwaptcha data-cwaptcha-badge>
    <button type="submit">Send</button>
</form>

<!-- green pill with custom label -->
<form method="post" data-cwaptcha data-cwaptcha-badge-option5="Korumalı">
    <button type="submit">Gönder</button>
</form>

<!-- brand-color, jQuery AJAX form -->
<form id="ajaxForm" data-cwaptcha-badge-option2="Protected">
    <button type="submit" style="background:#1a73e8;color:#fff">Submit</button>
</form>
5 rozet stili — öznitelik adı stili belirler; değer etiket metnidir (herhangi bir dil, boş bırakılırsa "Protected" kullanılır):data-cwaptcha-badge — nötr gri, düğme satırının altında ortalı (varsayılan)data-cwaptcha-badge-option2="metin" — marka rengi dolgu, ortalıdata-cwaptcha-badge-option3="metin" — büyük harfli imza stili, sağa hizalıdata-cwaptcha-badge-option4="metin" — minimal, düğme satırına gömülüdata-cwaptcha-badge-option5="metin" — yeşil hap, düğmenin altında sola hizalı

7. İşleyicinizde değişiklik gerekmez

public class ContactModel : PageModel
{
    [BindProperty] public string Name    { get; set; } = "";
    [BindProperty] public string Email   { get; set; } = "";

    public void OnGet() { }

    public void OnPost()
    {
        // Only ever reached if CWaptcha passed validation
    }
}
jQuery AJAX veya vanilla fetch mi kullanıyorsunuz? CWaptcha.sign() API'si ve [CWaptchaValidation] filtre özelliği için entegrasyon sihirbazına bakın.