نحوه استفاده از google recaptcha در Asp.net Core
نحوه استفاده از 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 در Asp.net Core
جهت استفاده از قابلیت 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 = "***************************************"
});
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2