Sıfırdan korumalı forma beş dakikadan kısa sürede.
dotnet add package CWaptcha
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
{
"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.
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();
<!-- 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.
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
}
}