tnblog
首页
视频
资源
登录

使用腾讯滑块登录验证码

17209人阅读 2020/1/8 18:16 总访问:119316 评论:0 收藏:0 手机
分类: jquery

     腾讯防水墙使用接入滑动验证效果,防止恶意、可疑用户登陆


    首先要去腾讯防水墙注册账号,登陆后创建验证 官方地址:https://007.qq.com

     

    创建之后点击到【快速接入】可以查看到appid和秘钥:

    

然后得到

  

准备工作已完成,下面就是代码进行客户端接入和服务器接入了


一、客户端接入:

    客户端接入即前端引入html和js代码

    引入js

  1. <script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>

 2、验证按钮(这个一般就是你的登陆按钮,按照腾讯固定格式)

  1. <button type="button" class="pn" id="TencentCaptcha" data-appid="你的data-appid" data-cbfn="callback">进入后台系统</button>

注:这你的id不可以乱改动,必须按照上面固定格式不可改动

为了后台传值验证我这里加了2个隐藏的input用于存储回调的票据和随机字符串

  1. <!--防水墙票据、字符串 begin-->
  2. <input type="hidden" value="" name="ticket" id="ticket">
  3. <input type="hidden" value="" name="randstr" id="randstr">
  4. <!--防水墙票据、字符串 end-->

   回调函数进入后台

  1.   <script>
  2.         window.callback = function(res{
  3.             if (res.ret === 1) {//验证失败
  4.                 alert("未通过验证,请重新验证");
  5.                 return;
  6.             }
  7.             if (res.ret === 0) {//验证成功
  8.                 //这里就是给上面的2个标签赋值
  9.                 $('#ticket').attr('value', res.ticket);//回调的票据
  10.                 $('#randstr').attr('value', res.randstr);//回调的字符串
  11.                 PreventLogin();
  12.             }
  13.         }
  14.     </script>

然后就是这一步我们就可以看到效果了

这里注意一下服务器接入

后台代码接入

  1. [HttpPost]
  2. public async Task<IActionResult> Login(string userName, string password, string verifycode, string ticket, string randstr, string returnUrl = null)
  3. {
  4.     //验证腾讯的防水墙
  5.     #region 防水墙验证(Get请求)
  6.     string url = "https://ssl.captcha.qq.com/ticket/verify?";//请求地址
  7.     //参数
  8.     string aid = _aid;//你的appid
  9.     string AppSecretKey = _AppSecretKey;//你的App Secret Key
  10.     string UserIp = HttpContext.Connection.RemoteIpAddress.ToString();
  11.     string parameters = string.Format("aid={0}&AppSecretKey={1}&Ticket={2}&Randstr={3}&UserIP={4}", aid, AppSecretKey, ticket, randstr, UserIp);
  12.     url = url + parameters;
  13.     //http get请求
  14.     HttpClient httpClient = new HttpClient();
  15.     string resulttoken = await httpClient.GetAsync(url).Result.Content.ReadAsStringAsync();
  16.     //验证结果
  17.     TencentCaptchaResultData tencentCaptcha = JsonConvert.DeserializeObject<TencentCaptchaResultData>(resulttoken);
  18.     //1:表示验证通过 0:失败
  19.     if (tencentCaptcha.response != 1)//失败则抛出异常,反之就进行后面的用户密码验证,判定是否等成功
  20.     {
  21.         throw new Exception("防水墙验证失败!");
  22.     }
  23.     #endregion
  24.     ViewData["returnUrl"] = returnUrl;
  25.     #region 内部账户验证
  26.     return Redirect(returnUrl);
  27.     #endregion
  28. }

如果要反序列话就要见一个实体类哦还有自己发验证默认如果促发id咩有到相对时间位置就会出错提示

  1. // 直接生成一个验证码对象
  2.         var captcha1 = new TencentCaptcha('你的appid'function (res{
  3.             if (res.ret === 1) {//验证失败
  4.                 alert("未通过验证,请重新验证");
  5.                 return;
  6.             }
  7.             if (res.ret === 0) {//验证成功
  8.                 //这里就是给上面的2个标签赋值
  9.                 $('#ticket').attr('value', res.ticket);//回调的票据
  10.                 $('#randstr').attr('value', res.randstr);//回调的字符串
  11.                 //js提交表单到后台(在这里指定提交方式和提交的页面)
  12.                 $("#LoginForm").attr("method""post");
  13.                 $("#LoginForm").attr("action""/Login/ExecLogin?" + '@ViewBag.pjurl').submit();
  14.             }
  15.         });

发起验证码时间节点

  1. show.sbmite();


评价
希望你懂得很多之后,依旧热爱生活
排名
31
文章
25
粉丝
11
评论
6
MUI 页面传值
是伍尚金哇 : 翻了半天不到底
MUI 页面传值
剑轩 : 可以,在写文章的时候,有需要写代码的地方,可以选择编辑器上的...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术