=x= 🌵 CONTACT Page 寄信頁的「我不是機器人」驗證功能,後端實作。
📌 Google reCAPTCHA 服務可用來判斷是否為真人使用,保護網站免受欺詐活動、垃圾郵件和濫用。
👀 參考官網資料 : Using reCAPTCHA with ASP.NET
🌵 網域先填 localhost 方便測試。(本機端)
🌵 完成後跳轉網頁會產生一組公鑰 (public_key) 跟私鑰 (private_key)。
👺 測試時不需要申請 Google Cloud Platform 上的 reCAPTCHA Enterprise 金鑰,商用金鑰會有計量計價規定,如果不小心因為被導引到該頁面而申請了商用金鑰,建議可以先刪除,本人在把 code 推到 GitHub 備份時,收到 google 警告信才發現這件事(汗)。
<configuration>
內加入以下程式碼並填入公鑰及私鑰<configuration>
<!-- Add code start -->
<appSettings>
<!-- Your site key for your reCAPTCHA control -->
<add key="RecaptchaSiteKey" value="這裡填入步驟1.註冊後取得之公鑰" />
<!-- Your secret key for your reCAPTCHA control -->
<add key="RecaptchaSecretKey" value="這裡填入步驟1.註冊後取得之私鑰" />
</appSettings>
<!-- Add code end -->
</configuration>
<%@ Page %>
下有新增一行 code 以加入設定<!-- 上方自動產生的設定 -->
<%@ Register Assembly="Recaptcha.Web" Namespace="Recaptcha.Web.UI.Controls" TagPrefix="cc1" %>
<!-- Render recaptcha API script (非必要,同頁使用兩個以上時才需要)-->
<cc1:RecaptchaApiScript ID="RecaptchaApiScript1" runat="server" />
<!-- Render recaptcha widget -->
<cc1:RecaptchaWidget ID="Recaptcha1" runat="server" RenderApiScript="False" />
🧠 NuGet 成功安裝後重開專案,工具箱搜尋 Recaptcha 就會出現控制項,記得 .aspx 頁面要將畫面切到"設計
"模式,"原始檔"模式可能會隱藏而找不到。
🌵 執行網頁需看到我不是機器人勾選框裡面無紅字錯誤,才是成功。
if (String.IsNullOrEmpty(Recaptcha1.Response)) {
lblMessage.Visible = true;
lblMessage.Text = "Captcha cannot be empty.";
}
else {
var result = Recaptcha1.Verify();
if (result.Success) {
//此處可加入"我不是機器人驗證"成功後要做的事
}
else {
lblMessage.Text = "Error(s): ";
foreach (var err in result.ErrorCodes) {
lblMessage.Text = lblMessage.Text + err;
}
}
}
📌 稍微說明一下為什麼最後會介紹這個寫法,網路上可以查到的作法很多,比較混亂的是一開始試著查資源時,有可能查到的是舊的寫法、JavaScript 作法、其它語言,或者那是 MVC 不是 Web Forms,對於還沒有接觸 MVC 的人,如果關鍵字搜尋一直查到 MVC 建議加入 Web Forms 關鍵字;而我是因為看不太懂 Google 官網提供的寫法,於是從它建議的 Nuget 安裝一路往回去看 GitHub 提供的範例,範例裡相對 Google 有更完整的示範 code 可以看,多了些判斷到底我跟著這樣做可不可行,而不是複製貼上後,然後就沒有然後了,只能呆在原地動彈不得,這是比較特別想講的地方。
👀 上方的作法參考 NutGet 的 GitHub : https://github.com/tanveery/recaptcha-net
👀 上線申請 Google Cloud Platform : https://console.cloud.google.com/security/recaptcha