Google Recaptcha สำหรับ ASP NET ง่ายขึ้น
NUGET URL: https://www.nuget.org/packages/recaptcha-aspnet
PM > Install-Package ReCaptcha-AspNet
รับความลับและกุญแจสาธารณะของคุณใน https://www.google.com/recaptcha/admin
เพิ่มแอป/web.config ภายในให้คุณ
< add key = " recaptcha-secret-key " value = " ...[secret key] " />
< add key = " recaptcha-public-key " value = " ...[public-key] " />เป็นทางเลือกหากคุณต้องการเปลี่ยนภาษาเริ่มต้นของ captcha (รับรหัสภาษาบนเว็บไซต์ recaptcha: https://developers.google.com/recaptcha/docs/language) หรือคุณสามารถใช้ค่า "อัตโนมัติ"
< add key = " recaptcha-language-key " value = " [language-code] " />หรือผ่านรหัส C#: จำเป็นต้องเรียกมันเพียงครั้งเดียวซึ่งเป็นสถานที่ที่ดีที่จะใส่สิ่งนี้คือฟังก์ชั่น Application_Start ()
string publicKey = "...[public-key]" ;
string secretKey = "...[secret-key]" ;
ReCaptcha . Configure ( publicKey , secretKey ) ;
// Optional, select a default language:
ReCaptchaLanguage defaultLanguage = ReCaptchaLanguage . German ;
ReCaptcha . Configure ( publicKey , secretKey , defaultLanguage ) ;
//Auto-select language from System.Thread.CurrentCulture
ReCaptchaLanguage defaultLanguage = ReCaptchaLanguage . Auto ;
ReCaptcha . Configure ( publicKey , secretKey , defaultLanguage ) ;เป็นทางเลือกหากคุณต้องการเปลี่ยนชุดรูปแบบเริ่มต้นจากแสงเป็นโหมดมืด
< add key = " recaptcha-language-theme " value = " dark " />หรือผ่านรหัส C#:
//Optional select a default dark theme
ReCaptchaLanguage defaultLanguage = ReCaptchaLanguage . Auto ;
ReCaptcha . Configure ( publicKey , secretKey , defaultLanguage , ReCaptchaTheme . dark ) ; ภายในแบบฟอร์มของคุณ
< form action =" myAction " >
< input type =" text " name =" myinput1 " />
@ReCaptcha.GetCaptcha() <!-- Will show your captcha as your configured Language,
if no language is defined it will show ReCaptcha default language (English) -->
</ form >เป็นทางเลือกหากคุณต้องการแทนที่ภาษาเริ่มต้นที่กำหนดค่าของคุณ:
< form action =" myAction " >
< input type =" text " name =" myinput1 " />
@ReCaptcha.GetCaptcha(ReCaptchaLanguage.PortugueseBrazil) <!-- Will show your ReCaptcha as Portuguese,
overriding any previous configuration -->
</ form >เป็นทางเลือกหากคุณต้องการแทนที่ชุดรูปแบบที่กำหนดค่าของคุณ (แสง/มืด):
< form action =" myAction " >
< input type =" text " name =" myinput1 " />
@ReCaptcha.GetCaptcha(theme: ReCaptchaTheme.dark) <!-- Will show your ReCaptcha on dark theme,
overriding any previous configuration -->
</ form >ภายในแบบฟอร์มของคุณ
< script type =" text/javascript " > function submit ( ) { $ ( 'form' ) . submit ( ) ; } </ script >
< form action =" myAction " >
< input type =" text " name =" myinput1 " />
@ReCaptcha.GetInvisibleCaptcha("submit", "Save") <!-- Will show a button, with a Label Save and call function "submit();" after user click ok and pass Captcha -->
</ form >เป็นทางเลือกหากคุณต้องการแทนที่ภาษาเริ่มต้นที่กำหนดค่าของคุณ:
< script type =" text/javascript " > function submit ( ) { $ ( 'form' ) . submit ( ) ; } </ script >
< form action =" myAction " >
< input type =" text " name =" myinput1 " />
@ReCaptcha.GetInvisibleCaptcha("submit", "Save", ReCaptchaLanguage.PortugueseBrazil) <!-- Will show your Invisible ReCaptcha as Portuguese, overriding any previous configuration -->
</ form >ภายในฟังก์ชั่นคอนโทรลเลอร์ของคุณหรือในตัวกรอง
string userResponse = HttpContext . Request . Params [ "g-recaptcha-response" ] ;
bool validCaptcha = ReCaptcha . ValidateCaptcha ( userResponse ) ;
if ( validCaptcha ) {
// Real User, validated !
DoStuff ( ) ;
.. .
} else {
// Bot Attack, non validated !
return RedirectToAction ( "YouAreARobot" , "Index" ) ;
} คุณสามารถใช้พร็อกซีเพื่อส่งการตอบกลับผู้ใช้ไปยังเซิร์ฟเวอร์ Recaptcha
.. .
const string proxyIp = "xxx.xxx.xxx.xxx" ;
const int proxyPort = 1234 ;
WebProxy webProxy = new WebProxy ( proxyIp , proxyPort ) ;
bool validCaptcha = ReCaptcha . ValidateCaptcha ( userResponse , webProxy ) ;
.. .อาจมีข้อยกเว้นดังต่อไปนี้หากคีย์ลับไม่ถูกต้องหรือคุณผ่านการตอบสนองของผู้ใช้ที่ไม่ถูกต้องเป็นพารามิเตอร์ ValidateCaptcha:
throw new ReCaptchaException ( ) ;นอกจากนี้ยังสามารถเรียก async:
public async ActionResult MyFunction ( ) {
string userResponse = HttpContext . Request . Params [ "g-recaptcha-response" ] ;
var validCaptcha = ReCaptcha . ValidateCaptchaAsync ( userResponse ) ;
DoSomeParallelStuff ( ) ;
if ( await validCaptcha ) {
// Real User, validated !
DoStuff ( ) ;
.. .
} else {
// Bot Attack, non validated !
return RedirectToAction ( "YouAreARobot" , "Index" ) ;
}
}