Baru - baru ini lagi belajar ASP.NET MVC dan banyak hal yang bisa saya pelajari dari ASP.NET MVC dan dengan di gabungkan Entity Framework Database dalam project sederhana yang saya sedang buat. Namun kemarin saya disuruh mengimplementasikan Google ReChaptcha dalam ASP.Net MVC untuk mencegah SPAM.
Dalam pengimplementasian Google ReChaptcha saya menemukan kendala dengan Tag Html.Raw pada asp.net MVC. wadunh setelah di baca baca lagi ternyata eh ternyata penggunaan Html.Raw hanya bisa digunakan di ASP.NET MVC 3 saja sedangkan project yang sedang saya buat hanya menggunakan ASP.NET MVC 2 yang tentunya belum mensupport keberadaan Html.Raw.
Ternyata setelah di baca baca di MSDN penjelasan mengenai Html.Raw itu adalah "This method wraps HTML markup using the IHtmlString class, which renders unencoded HTML. ". Jadi Method Html.Raw yang ada di ASP.NET Mvc3 adalah sebagai penbungkus dari HTML code yang di hasilkan mungkin dari Server side dan di Uncode kembali menjadi HTML format.
Iseng Coba Coba, karena Kepepet buat Mengimplementasikan si Google ReChaptcha, akhirnya saya hanya menggunakan Html tag
saja untuk membungkus Method dari google ReChaptcha yang menghasilkan Html Uncode dari prosesnya dan ternyata berhasil juga :D.
Ooo,, dalem hati ternyata hanya menggunakan simple tag
untuk menggantikan si method Html.Raw yang ada di ASP.Net MVC 3.
Jadi kurang lebih penggunaanya hanya begini saja
<%= Html.GenerateCaptcha("captcha", "clean")>
di banding sebelumnya saya di buat bingung dengan <%= Html.Raw(Html.GenerateChaptcha("capcha","clean") %>.Selengkapnya...
Lagi Belajar ASP.Net mvc nih, dan lagi disuruh buat project-project
sederhana buat implementasikan apa yang di pelajarkan. dan kebetulan
sedang buat Contact View yang di harus menggunakan Capcha sebagai
pencegah BOT yang menginput secara otomatis bs menggunakan selenium
Tools atau sebagainya.
Berikut cara mengimplementasikan penggunaan Capcha yang disini saya menggunakan Google reCapcha sebagai Engine :) :
Download .Net DLL reCapcha yang akan di gunakan dalam project ASP MVC. Download Disini.
Ekstrak zip, Copy Recapcha.dll dan Recapcha.res ke dalam folder BIN project anda
Add Reference Recapcha.dll kedalam project ASP.NET MVC anda
Tambahkan Beberapa Application Configuration di Web.Config untuk Private
key dan Public Key Google API yang nanti akan di gunakan oleh DLL
reCapcha dan juga configurasi untuk meregister ReCapcha Component. Untuk mendapatkan Public key dan Private Key bisa di dapatkandisini, Harus Login dengan menggunakan Google Account(GMail) dan registerkan domain "localhost" jika anda mendevelop dalam localserver.
Tambahkan Configurasi dibawah ini dalam Tag dalam web config. Lihat dan cocokan, copy saja yang belum ada dalam tag
<appSettings>
<add key="webpages:Version" value="1.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
<add key="ReCaptchaPrivateKey" value="put your private key value here" />
<add key="ReCaptchaPublicKey" value="put your public key value here" />
<appSettings>
Tambahkan Configurasi dibawah ini dalam Tag dalam web config. Lihat dan cocokan, copy saja yang belum ada dalam tag
Tips: Jika anda menggunakan ASP.NET MVC versi 2 Kebawah, untuk menggantikan Htm.Raw anda bisa hanya menggunakan HTML tag <div> </div>. Sehingga menjadi seperti ini:
Dan tambahkan Code Controller di Controller anda seperti ini
[HttpPost]
[RecaptchaControlMvc.CaptchaValidator]
public ActionResult ForgotPassword(CheckUsernameViewModel model, bool captchaValid, string captchaErrorMessage) {
if (!Membership.EnablePasswordReset)
throw new Exception("Password reset is not allowed\r\n");
if(ModelState.IsValid) {
if(captchaValid) {
return RedirectToAction("AnswerSecurityQuestion", new { username = model.Username });
}
ModelState.AddModelError("", captchaErrorMessage);
}
return View(model);
}
*Note: Untuk Nama function di controller(Berwarna Merah) silahkan anda sesuaikan dengan nama view yang anda buat dan untuk nama Model(Berwarna Biru) Silahkan anda sesuaikan dengan Model yang anda gunakan.