C#滑動拼圖驗證碼實現(xiàn)筆記

前言

C# 是一個現(xiàn)代的逸月、通用的瘦穆、面向?qū)ο蟮木幊陶Z言纪隙,它是由微軟(Microsoft)開發(fā)的,由 Ecma 和 ISO 核準認可的扛或。突發(fā)奇想绵咱,動手開發(fā)一個C#滑動拼圖驗證碼,下面是我開發(fā)過程的記錄熙兔。

準備工作

本文使用IIS搭建環(huán)境沧卢,同時確保項目運行正常冀泻。

目錄結(jié)構(gòu)

核心代碼

  • noramal.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>凱格行為驗證碼 - Net C# demo</title>
<link rel="stylesheet" href="./style/demo.css" />
<!--
將以下域名替換成你的“應(yīng)用服務(wù)器域名”
將以下 appid 替換成你的 AppID
服務(wù)器域名和appid在你的應(yīng)用管理中獲取
示例:<script src="captcha.js?appid=xxx"></script>
-->
<script src="captcha.js?appid=appId"></script>
<script>
kg.captcha({
    // 綁定顯示區(qū)域
    bind: "#captchaBox",

    // 驗證成功事務(wù)處理
    success: function (e) {
        console.log(e);
        // 將驗證成功后的 token 通過隱藏域傳遞到后端
        kg.$("#kgCaptchaToken").value = e["token"];
    },

    // 驗證失敗事務(wù)處理
    failure: function (e) {
        console.log(e);
    },

    // 點擊刷新按鈕時觸發(fā)
    refresh: function (e) {
        console.log(e);
    }
});
// 檢查表單提交
function check() {
    if (kg.$("#kgCaptchaToken").value == "") {
        alert("請完成圖形驗證后提交")
        return false;
    } else {
        return true;
    }
}
</script>
</head>
<body>
    <form action="demo.aspx?cty=1" method="post" id="form" onsubmit="return check();">
        <!-- 將驗證成功后的 token 通過隱藏域傳遞到后端 -->
        <input type="hidden" name="kgCaptchaToken" id="kgCaptchaToken" value="" />
        <div class="inputForm">
            <input type="text" name="username" placeholder=" 例:填寫登錄帳號" />
            <br/>
            <input type="password" name="password" placeholder=" 例:填寫登錄密碼" />
        </div>
        <!-- 綁定顯示區(qū)域 -->
        <div id="captchaBox"></div>
        <input type="submit" value="提  交" class="btn" />
    </form>
</body>
</html>
  • demo.aspx.cs
using System;
using KgCaptchaSDK;

public partial class _Default : System.Web.UI.Page{
    protected void Page_Load(object sender, EventArgs e) {

        // 后端處理
        string html, appId, appSecret, Token;
        if (Request.Form.ToString().Length > 0){  // 有數(shù)據(jù)處理

            string cty = Request.QueryString["cty"];
            // 設(shè)置 AppId 及 AppSecret约郁,在應(yīng)用管理中獲取
            if (cty == "1"){
                appId = "appId";
                appSecret = "appSecret";
            }
            // 填寫你的 AppId 和 AppSecret信柿,在應(yīng)用管理中獲取
            var request = new kgCaptcha(appId, appSecret);

            // 前端驗證成功后頒發(fā)的 token,有效期為兩分鐘
            request.token = Request.Form["kgCaptchaToken"];

            // 填寫應(yīng)用服務(wù)域名舆声,在應(yīng)用管理中獲取
            request.appCdn = "https://cdn.kgcaptcha.com";

            // 當安全策略中的防控等級為3時必須填寫花沉,一般情況下可以忽略
            // 可以填寫用戶輸入的登錄帳號(如:$_POST["username"])柳爽,可攔截同一帳號多次嘗試等行為
            request.userId = "kgCaptchaDemo";

            // 請求超時時間,秒
            request.connectTimeout = 5;

            // 發(fā)送驗證請求
            var requestResult = request.sendRequest();

            if (requestResult.code == 0) {
                // 驗簽成功邏輯處理 ***

                // 這里做驗證通過后的數(shù)據(jù)處理
                // 如登錄/注冊場景碱屁,這里通常查詢數(shù)據(jù)庫磷脯、校驗密碼、進行登錄或注冊等動作處理
                // 如短信場景娩脾,這里可以開始向用戶發(fā)送短信等動作處理
                // ...

                html = "<script>alert('驗證通過');history.back();</script>";
            } else {
                // 驗簽失敗邏輯處理
                html = "<script>alert(\"" + requestResult.msg + " - " + requestResult.code + "\");history.back();</script>";
            }

            // 輸出結(jié)果
            Response.Write(html);
        } else {
            Response.Redirect("index.html");
        }
    }
}

效果展示

最后

SDK開源地址:https://github.com/KgCaptcha赵誓,順便做了一個演示:https://www.kgcaptcha.com/demo/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市柿赊,隨后出現(xiàn)的幾起案子俩功,更是在濱河造成了極大的恐慌,老刑警劉巖碰声,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诡蜓,死亡現(xiàn)場離奇詭異,居然都是意外死亡奥邮,警方通過查閱死者的電腦和手機万牺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洽腺,“玉大人,你說我怎么就攤上這事覆旱≌号螅” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵扣唱,是天一觀的道長藕坯。 經(jīng)常有香客問我,道長噪沙,這世上最難降的妖魔是什么炼彪? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮正歼,結(jié)果婚禮上辐马,老公的妹妹穿的比我還像新娘。我一直安慰自己局义,他們只是感情好喜爷,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著萄唇,像睡著了一般檩帐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上另萤,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天湃密,我揣著相機與錄音,去河邊找鬼。 笑死泛源,一個胖子當著我的面吹牛拔妥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俩由,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼毒嫡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了幻梯?” 一聲冷哼從身側(cè)響起兜畸,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碘梢,沒想到半個月后咬摇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡煞躬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年肛鹏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恩沛。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡在扰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雷客,到底是詐尸還是另有隱情芒珠,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布搅裙,位于F島的核電站皱卓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏部逮。R本人自食惡果不足惜娜汁,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兄朋。 院中可真熱鬧掐禁,春花似錦、人聲如沸蜈漓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽融虽。三九已至享完,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間有额,已是汗流浹背般又。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工彼绷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茴迁。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓寄悯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親堕义。 傳聞我的和親對象是個殘疾皇子猜旬,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 背景 關(guān)于驗證碼的使用場景還是非常多的,很多網(wǎng)站上的驗證碼可謂是五花八門倦卖,下面是我使用Vue.js實現(xiàn)滑動拼圖驗證...
    人生如夢2閱讀 211評論 0 0
  • 效果圖 準備 訪問KgCaptcha網(wǎng)站洒擦,注冊賬號后登錄控制臺,訪問“無感驗證”模塊怕膛,申請開通后系統(tǒng)會分配給應(yīng)用一...
    人生如夢2閱讀 173評論 0 0
  • 開頭 驗證碼應(yīng)用于我們生活熟嫩、工作的方方面面,比如注冊登錄賬號褐捻、支付訂單掸茅、修改密碼等。下面我是在一次項目中利用滑動拼...
    人生如夢2閱讀 54評論 0 0
  • 文字點選驗證碼樣式設(shè)置 哎柠逞!這驗證碼形態(tài)多變昧狮,怎么干擾這么多?這文字數(shù)量怎么一會點4個板壮、一會點6個陵且,這到底是怎么弄...
    norhone閱讀 227評論 0 0
  • 滑動拼圖驗證碼素材管理 在一次項目中,為了使驗證碼更加貼合自身風格个束。我找到了一款驗證碼產(chǎn)品可以通過設(shè)置圖片素材,來...
    norhone閱讀 173評論 0 0