نحوه استفاده از google recaptcha در Asp.net Core به چه صورتی هست ؟
از این لینک خواستم استفاده کنم
https://github.com/PaulMiami/reCAPTCHA/wiki/Getting-started
https://github.com/PaulMiami/reCAPTCHA/tree/master/sample/TestWebApp
ولی موقع استفاده این ارور میاد
ArgumentException: The 'SiteKey' option must be provided.
خطایی که شمادارید احتمالا به این خاطر هست که siteKey رو داخل سایت قرار ندادید. برای استفاده از google recaptcha باید یک رشته که بهش sitekey میگن رو توی سایت قرار بدید تا از طریق اون گوگل بتونه سایت شما رو برای جلوگیری از ورود ربات های مزاحم شناسایی کنه.
جهت استفاده از قابلیت google recaptcha ابتدا باید سایت خودتون رو به گوگل معرفی کنید تا یک SiteKey یا Secrect Key به شما بده تا از طریق اون گوگل بتونه سایت شما رو شناسایی کنه.
خب بعد از اینکه سایت خودتون رو معرفی کردید چند روش برای اعتبارسنجی و صحت داده های ورودی شما به شما پیشنهاد میشه. یکی از این روش ها این هست که یک رشته به شما میده و شما باید از این رشته در سایت خودتون استفاده کنید.
بعد از اینکه این رشته رو دریافت کردید می تونید از گوگل ریکپچا استفاده کنید.
نحوه استفاده از Google Recaptcha
برای استفاده ار کپچای گوگل در صفحه مثلا فرم لاگین ابتدا باید یک ViewModel رو ایجاد کنید :
public class LoginViewModel
{
[Display(Name = "نام کاربری")]
public string UserName { get; set; }
[Display(Name = "رمز عبور")]
public string Password{ get; set; }
[Display(Name = "کد امنیتی")]
public string CaptchaCode { get; set; }
}
خب همونطوری که میبینید در این ویومدل یک فیلد هم به نام کدامنیتی قرار داده شده. حالا از این ViewModel میشه در View استفاده کرد.
@model porseman.Models.ViewModel.LoginViewModel
<style>
.g-recaptcha {
display: inline-block;
width: 100px;
}
</style>
<form>
<!--UserName-->
<div class="form-group">
<label asp-for="UserName"></label>
<input asp-for="UserName" type="text" class="form-control" />
</div>
<!--Password-->
<div class="form-group">
<label asp-for="Password"></label>
<input asp-for="Password" type="password" class="form-control" />
</div>
<!--captcha-->
<div class="form-group">
<label class="form-control-label">تصویر امنیتی</label>
<div class="g-recaptcha" data-sitekey="AAANq9LHOPrwR1tIa-PNdkzGGodHwf">
</div>
</div>
<!--btn-->
<div class="form-group">
<div>
<button type="submit">
ورود
</button >
</div>
</form>
خب در کدهای Html بالا فرم لاگین طراحی شده که گوگل ریکپچا به همراه کدی که از سایت گوگل با عنوان SecretKey دریافت شده هم وجود داره.
حالا باید در سمت کنترلر این کدامنیتی رو به سمت سایت گوگل بفرستیم و صحت اون رو بررسی کنیم.
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Login(LoginViewModel model)
{
string urlToPost = "https://www.google.com/recaptcha/api/siteverify";
//Secret key خود را در این قسمت وارد کنید
string secretKey = "AAAGxqwwgpqh4SI1sUFX2BAR_ddl_3"; // change this
string gRecaptchaResponse = form["g-recaptcha-response"];
var postData = "secret=" + secretKey + "&response=" + gRecaptchaResponse;
// send post data
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlToPost);
request.Method = "POST";
request.ContentLength = postData.Length;
request.ContentType = "application/x-www-form-urlencoded";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(postData);
}
// receive the response now
string result = string.Empty;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
result = reader.ReadToEnd();
}
}
// validate the response from Google reCaptcha
var captChaesponse = JsonConvert.DeserializeObject<reCaptchaResponse>(result);
if (!captChaesponse.Success)
{
ModelState.AddModelError(string.Empty, "لطفا تصویر امنیتی را تایید کنید.");
return View(model);
}
//Login Stetement
}
در کدهای بالا که در سمت کنترلر نوشته شده قبل از انجام Login از صحت کدامنیتی اطمینان پیدا می کنیم و در این بین عملیات تشخیص انسان یا ربات رو گوگل برای ما انجام میده.
نحوه استفاده از google recaptcha در Asp.net core به این صورتی هست که براتون نوشتم و کدهاش رو هم کامل قرار دادم.
ممنونم از پاسخ شما بله متاسفانه در Sturtup به درستی Sitekey رو به درستی وارد نکرده بودم
باید به این شکل وارد میکردم
services.AddRecaptcha(new RecaptchaOptions
{
SiteKey = "***************************************",
SecretKey = "***************************************"
});
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
76
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
214
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
396
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
567
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2011
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
76
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|