龙空技术网

C#实现的滑块验证码

编程乐趣 1063

前言:

当前我们对“jquery实现登陆验证码”大致比较关心,看官们都想要了解一些“jquery实现登陆验证码”的相关文章。那么小编同时在网络上收集了一些关于“jquery实现登陆验证码””的相关内容,希望各位老铁们能喜欢,各位老铁们一起来学习一下吧!

验证码现在已经广泛用在各种软件上,主要是用于登录与注册的校验。验证码的作用主要是防止恶意注册或暴力登录,早期验证码都是数字验证码,现在基本无法满足需求了,现在验证码已经发展成多种多样了,今天给大家推荐一款C#实现的滑块验证码。

先看看效果:

项目简介

功能:用户拖动滑块完成时完成校验,支持PC端及移动端。并在后台保存用户校验过程的时间、精度、滑动轨迹等信息。

原理是将大图片分为20份,并进行混淆拼接,支持自定义图片。

技术架构

1、.Net 4.0

2、C# + Jquery + Newtonsoft.Json

项目结构核心代码

主要是校验滑动的时间、轨迹、精度,确保是人工滑动,不是机器人滑动。

       /// <summary>        /// 校验前端是否通过验证        /// </summary>        public void CheckCode(HttpContext context)        {            context.Response.ContentType = "text/plain";            string ls_point = context.Request["point"];//完成时x轴对于左上角位置位置            string datelist = context.Request["datelist"];//滑动过程特征            string timespan = context.Request["timespan"];//耗时            if (HttpContext.Current.Session["code"] == null)            { WriteError(context, "发生错误"); return; }            if (string.IsNullOrEmpty(ls_point))            { WriteError(context, "未获取到坐标值"); return; }            int li_old_point = 0, li_now_point = 0;            try { li_old_point = int.Parse(HttpContext.Current.Session["code"].ToString()); }            catch { WriteError(context, "发生错误-1"); return; }            try { li_now_point = int.Parse(ls_point); }            catch { WriteError(context, "获取到的坐标值不正确"); return; }            //错误            if (Math.Abs(li_old_point - li_now_point) > _deviationPx)            {                int li_count = 0;                try                {                    li_count = int.Parse(HttpContext.Current.Session["code_errornum"].ToString());                }                catch { li_count = 0; }                li_count++;                if (li_count > _MaxErrorNum)                {                    //超过最大错误次数后不再校验                    HttpContext.Current.Session["code"] = null;                    Write(context, "{\"state\":-1,\"msg\":" + li_count + "}"); return;                }                HttpContext.Current.Session["code_errornum"] = li_count;                //返回错误次数                Write(context, "{\"state\":-1,\"msg\":" + li_count + "}"); return;            }            if (SlideFeature(datelist))            {                //机器人??            }            //校验成功 返回正确坐标            HttpContext.Current.Session["isCheck"] = "OK";            HttpContext.Current.Session["code_errornum"] = null;            HttpContext.Current.Session["code"] = null;            Write(context, "{\"state\":0,\"info\":\"正确\",\"data\":" + li_old_point + "}");        }

使用方法

$("#__Verification").slide({    imgspec: "200*100",    successCallBack: function () {        console.log("success");        alert('你已通过验证!');    }});
源码地址

私信回复:1031

标签: #jquery实现登陆验证码 #jquery滑块验证代码