Blogger Information
Blog 16
fans 0
comment 0
visits 5710
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
C#滑动拼图验证码实现笔记
Original
254 people have browsed it

前言

C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。突发奇想,动手开发一个C#滑动拼图验证码,下面是我开发过程的记录。

准备工作

本文使用IIS搭建环境,同时确保项目运行正常。

目录结构

核心代码

  • noramal.html
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>凯格行为验证码 - Net C# demo</title>
  6. <link rel="stylesheet" href="./style/demo.css" />
  7. <!--
  8. 将以下域名替换成你的“应用服务器域名”
  9. 将以下 appid 替换成你的 AppID
  10. 服务器域名和appid在你的应用管理中获取
  11. 示例:<script src="captcha.js?appid=xxx"></script>
  12. -->
  13. <script src="captcha.js?appid=appId"></script>
  14. <script>
  15. kg.captcha({
  16. // 绑定显示区域
  17. bind: "#captchaBox",
  18. // 验证成功事务处理
  19. success: function (e) {
  20. console.log(e);
  21. // 将验证成功后的 token 通过隐藏域传递到后端
  22. kg.$("#kgCaptchaToken").value = e["token"];
  23. },
  24. // 验证失败事务处理
  25. failure: function (e) {
  26. console.log(e);
  27. },
  28. // 点击刷新按钮时触发
  29. refresh: function (e) {
  30. console.log(e);
  31. }
  32. });
  33. // 检查表单提交
  34. function check() {
  35. if (kg.$("#kgCaptchaToken").value == "") {
  36. alert("请完成图形验证后提交")
  37. return false;
  38. } else {
  39. return true;
  40. }
  41. }
  42. </script>
  43. </head>
  44. <body>
  45. <form action="demo.aspx?cty=1" method="post" id="form" onsubmit="return check();">
  46. <!-- 将验证成功后的 token 通过隐藏域传递到后端 -->
  47. <input type="hidden" name="kgCaptchaToken" id="kgCaptchaToken" value="" />
  48. <div class="inputForm">
  49. <input type="text" name="username" placeholder=" 例:填写登录帐号" />
  50. <br/>
  51. <input type="password" name="password" placeholder=" 例:填写登录密码" />
  52. </div>
  53. <!-- 绑定显示区域 -->
  54. <div id="captchaBox"></div>
  55. <input type="submit" value="提 交" class="btn" />
  56. </form>
  57. </body>
  58. </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 > 0){ // 有数据处理
  8. string cty = Request.QueryString["cty"];
  9. // 设置 AppId 及 AppSecret,在应用管理中获取
  10. if (cty == "1"){
  11. appId = "appId";
  12. appSecret = "appSecret";
  13. }
  14. // 填写你的 AppId 和 AppSecret,在应用管理中获取
  15. var request = new kgCaptcha(appId, appSecret);
  16. // 前端验证成功后颁发的 token,有效期为两分钟
  17. request.token = Request.Form["kgCaptchaToken"];
  18. // 填写应用服务域名,在应用管理中获取
  19. request.appCdn = "https://cdn.kgcaptcha.com";
  20. // 当安全策略中的防控等级为3时必须填写,一般情况下可以忽略
  21. // 可以填写用户输入的登录帐号(如:$_POST["username"]),可拦截同一帐号多次尝试等行为
  22. request.userId = "kgCaptchaDemo";
  23. // 请求超时时间,秒
  24. request.connectTimeout = 5;
  25. // 发送验证请求
  26. var requestResult = request.sendRequest();
  27. if (requestResult.code == 0) {
  28. // 验签成功逻辑处理 ***
  29. // 这里做验证通过后的数据处理
  30. // 如登录/注册场景,这里通常查询数据库、校验密码、进行登录或注册等动作处理
  31. // 如短信场景,这里可以开始向用户发送短信等动作处理
  32. // ...
  33. html = "<script>alert('验证通过');history.back();</script>";
  34. } else {
  35. // 验签失败逻辑处理
  36. html = "<script>alert(\"" + requestResult.msg + " - " + requestResult.code + "\");history.back();</script>";
  37. }
  38. // 输出结果
  39. Response.Write(html);
  40. } else {
  41. Response.Redirect("index.html");
  42. }
  43. }
  44. }

效果展示

最后

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

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post