【发布时间】:2021-10-29 11:34:02
【问题描述】:
在具有 Identity 和 IdentityServer4 的 ASP.NET Core 中 - 我需要为新用户添加保护措施。
您如何实施验证码/验证码?
【问题讨论】:
标签: asp.net-core identityserver4 captcha
在具有 Identity 和 IdentityServer4 的 ASP.NET Core 中 - 我需要为新用户添加保护措施。
您如何实施验证码/验证码?
【问题讨论】:
标签: asp.net-core identityserver4 captcha
我找到了这个简单的代码:https://github.com/Jarda29/GoogleReCaptcha.V3
Register
<div class="row">
<div class="col-md-4">
<section>
<form asp-route-returnUrl="@Model.ReturnUrl" method="post">
<h4>Create a new account.</h4>
<hr />
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="Input.Email"></label>
<input asp-for="Input.Email" class="form-control" />
<span asp-validation-for="Input.Email" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Input.Password"></label>
<input asp-for="Input.Password" class="form-control" />
<span asp-validation-for="Input.Password" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Input.ConfirmPassword"></label>
<input asp-for="Input.ConfirmPassword" class="form-control" />
<span asp-validation-for="Input.ConfirmPassword" class="text-danger"></span>
</div>
<button type="submit" class="btn btn-primary">Register</button>
<input type="hidden" name="captcha" id="captchaInput" value="" />
</form>
</section>
</div>
</div>
@section Scripts {
<script src="https://www.google.com/recaptcha/api.js?render=@Configuration["Recaptcha:siteKey"]"></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('@Configuration["Recaptcha:siteKey"]', { action: 'contact' }).then(function (token) {
$("#captchaInput").val(token);
});
});
</script>
<partial name="_ValidationScriptsPartial" />
}
if (ModelState.IsValid)
{
if (!await _captchaValidator.IsCaptchaPassedAsync(captcha))
{
ModelState.AddModelError("captcha", "Captcha validation failed");
}
else
{
var user = new ApplicationUser { UserName = Input.Email, Email = Input.Email };
var result = await _userManager.CreateAsync(user, Input.Password);
if (result.Succeeded)
{
_logger.LogInformation("User created a new account with password.");
services.AddHttpClient<ICaptchaValidator, RecaptchaValidator>();
【讨论】: