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();

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.

6. İş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.