用户
 找回密码
 入住 CI 中国社区
搜索
查看: 212|回复: 0
收起左侧

C#实现KgCaptcha滑动拼图验证码笔记

[复制链接]
发表于 2023-4-13 10:44:52 | 显示全部楼层 |阅读模式
前言
C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。突发奇想,动手开发一个C#滑动拼图验证码,下面是我开发过程的记录。

准备工作
本文使用IIS搭建环境,同时确保项目运行正常。
3.PNG


目录结构
4.PNG



核心代码
  • noramal.html
HTML复制代码
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>凯格行为验证码 - Net C# demo</title>
<link rel="stylesheet" href="./style/demo.css" />
<!--
将以下域名替换成你的“应用服务器域名”
将以下 appid 替换成你的 AppID
服务器域名和appid在你的应用管理中获取
示例:<script src="captcha.js?appid=xxx"></script>
-->
<script src="captcha.js?appid=appId"></script>
<script>
kg.captcha({
    // 绑定显示区域
    bind: "#captchaBox",
 
    // 验证成功事务处理
    success: function (e) {
        console.log(e);
        // 将验证成功后的 token 通过隐藏域传递到后端
        kg.$("#kgCaptchaToken").value = e["token"];
    },
 
    // 验证失败事务处理
    failure: function (e) {
        console.log(e);
    },
 
    // 点击刷新按钮时触发
    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">
        <!-- 将验证成功后的 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>
        <!-- 绑定显示区域 -->
        <div id="captchaBox"></div>
        <input type="submit" value="提  交" class="btn" />
    </form>
</body>
</html>
复制代码



  • demo.aspx.cs
  1. using System;
  2. using KgCaptchaSDK;

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

  5.         // 后端处理
  6.         string html, appId, appSecret, Token;
  7.         if (Request.Form.ToString().Length &gt; 0){  // 有数据处理

  8.             string cty = Request.QueryString[&quot;cty&quot;];
  9.             // 设置 AppId 及 AppSecret,在应用管理中获取
  10.             if (cty == &quot;1&quot;){
  11.                 appId = &quot;appId&quot;;
  12.                 appSecret = &quot;appSecret&quot;;
  13.             }
  14.             // 填写你的 AppId 和 AppSecret,在应用管理中获取
  15.             var request = new kgCaptcha(appId, appSecret);

  16.             // 前端验证成功后颁发的 token,有效期为两分钟
  17.             request.token = Request.Form[&quot;kgCaptchaToken&quot;];

  18.             // 填写应用服务域名,在应用管理中获取
  19.             request.appCdn = &quot;https://cdn.kgcaptcha.com&quot;;

  20.             // 当安全策略中的防控等级为3时必须填写,一般情况下可以忽略
  21.             // 可以填写用户输入的登录帐号(如:$_POST[&quot;username&quot;]),可拦截同一帐号多次尝试等行为
  22.             request.userId = &quot;kgCaptchaDemo&quot;;

  23.             // 请求超时时间,秒
  24.             request.connectTimeout = 5;

  25.             // 发送验证请求
  26.             var requestResult = request.sendRequest();

  27.             if (requestResult.code == 0) {
  28.                 // 验签成功逻辑处理 ***

  29.                 // 这里做验证通过后的数据处理
  30.                 // 如登录/注册场景,这里通常查询数据库、校验密码、进行登录或注册等动作处理
  31.                 // 如短信场景,这里可以开始向用户发送短信等动作处理
  32.                 // ...

  33.                 html = &quot;&lt;script&gt;alert('验证通过');history.back();&lt;/script&gt;&quot;;
  34.             } else {
  35.                 // 验签失败逻辑处理
  36.                 html = &quot;&lt;script&gt;alert(\&quot;&quot; + requestResult.msg + &quot; - &quot; + requestResult.code + &quot;\&quot;);history.back();&lt;/script&gt;&quot;;
  37.             }

  38.             // 输出结果
  39.             Response.Write(html);
  40.         } else {
  41.             Response.Redirect(&quot;index.html&quot;);
  42.         }
  43.     }
  44. }
复制代码



效果展示
5.PNG



最后
SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/


本版积分规则