reCAPTCHA V3 for .NET 5.
- Install the package.
Install-Package reCaptcha-V3 -Version 1.0.0
or
dotnet add package reCaptcha-V3 --version 1.0.0
-
Get your
Site-Key
andSecret-Key
to use reCAPTCHA from here. -
Add following service registrations to
ConfigureServices
method in Startup.cs.
services.AddRecaptcha(recaptchaOptions =>
{
recaptchaOptions.SecretKey = "your_recaptcha_secret_key";
recaptchaOptions.SiteKey = "your_recaptcha_site_key";
});
- Specify reCAPTCHA tag helper in
_ViewImports.cshtml
as below.
//...
@addTagHelper *, ReCaptcha
- Use the
<recaptcha />
tag helper in your View. (e.g. Home/Index.cshtml)
<h5 class="display-5">Recaptcha MVC Demo</h5>
<div class="container">
<form id="my-form" method="post" asp-action="Index">
<div class="form-group">
<label>Username</label>
<input type="text" asp-for="Username"/>
</div>
<div class="form-group">
<label>Password</label>
<input type="text" asp-for="Password"/>
</div>
<input type="hidden" asp-for="RecaptchaToken" id="recaptcha-token" />
<div class="form-group">
<button class="btn btn-dark">
Submit
</button>
</div>
</form>
</div>
<recaptcha action-name="login" execute-method="tokenProvider"/>
<script>
function tokenProvider(token) {
document.getElementById("recaptcha-token").value = token;
}
</script>
- After submitting the form and sending a POST request to the server, you can simply check the user is allowed to do the action or not.
private readonly IRecaptchaVerifier _recaptchaVerifier;
public SampleController(IRecaptchaVerifier recaptchaVerifier)
{
_recaptchaVerifier = recaptchaVerifier;
}
[HttpPost]
public async Task<IActionResult> Index(RecaptchaModel model)
{
var recaptcha = await _recaptchaVerifier.VerifyAsync(model.RecaptchaToken);
if (recaptcha.Success && recaptcha.Score >= 0.7)
{
return Ok(recaptcha);
}
return BadRequest(new {message = "You can not proceed this action "});
}