网站首页

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 前端开发 > jQuery >

验证码插件 vercode.js

时间:2023-07-22 12:18

人气:

作者:admin

标签:

导读:第1代图片验证码 -#160;字母数字型 第2代滑动验证码 - 图片截取型 第3代验证码 - 选图型 vercode.js 结合了上面的情况下新研发的一种验证码。 验证码类型 验证码描述 操作性 安全性 描述...

第1代图片验证码 - 字母数字型

 

第2代滑动验证码 - 图片截取型

第3代验证码 - 选图型

 vercode.js 结合了上面的情况下新研发的一种验证码。

验证码类型 验证码描述 操作性 安全性 描述
字母数字型图片验证码

这是一种通过后台随机码生成图片的验证码。服务器会在随机码生成时保存随机码。

当进行登录验证时,会根据输入的验证码与服务器保存的验证码进行匹配。

★★★ ★★★★

需要输入

客户端与服务端联合验证,安全性高

滑动验证码

这是一种客户端验证的验证码,相对来说安全性不高,因为随机码是客户端生成的,

验证也是客户端完成的,客户端完成之后再执行的服务器账号密码验证,对于存在

攻击性的情况下来说,获取到服务器验证接口后,是完全可以跳过客户端验证直接

访问服务端接口进行账号和密码验证的。

★★★★★ ★★★

只需要滑动

仅客户端验证,安全性低

选图型验证码

这是一种通过服务端图片与字符匹配的关系生成的一种拼图提供给客户端,客户端

点击拼图后,会保存拼图背后的字符,从而拿客户端的字符与服务端图片对应字符

进行匹配

★★★ ★★★★★

需要人眼识别和选择

客户端与服务端联合验证,安全性高

vercode验证码

这种是结合了第一种验证码,它也是通过服务端账号生成随机字符,并保留随机字符,

如果账号不匹配的话,是没办法获取到验证码的,然后生成字符图片给客户端,客户端

生成键盘,用户通过选择键盘字符。然后在登录时将账号密码以及选择的字符一并提供

给服务端验证。

★★★★ ★★★★

直接选择

客户端与服务端联合验证,安全性高

 

 

 

 

 

 

 

 

 

 

 

 

 

 

vercode.js

var vercode = new Object();
vercode.apiPath = "";
vercode.userId = "";
vercode.generateVerifyImage = function () {
    try {
        var url = vercode.apiPath;
        var userId = $(vercode.userId).val();
        $.ajax({
            url: url,
            type: 'post',
            data: { userId: userId },
            dataType: 'json',
            async: false,
            success: function (res) {
                if (res.code == 0) {
                    document.getElementById('verImage').src = "data:image/jepg;base64," + res.data;
                }
            },
            error: function () {
                console.log('Error occurred while opening the image file.');
            }
        });
    } catch (e) {

    } finally {
        document.getElementById('verset').style.display = 'block';
        document.getElementById('verset').style.top = ($('#vercode').offset().top + $('#vercode').height())+"px";
        document.getElementById('verset').style.left = ($('#vercode').offset().left)+"px";
        document.getElementById('code').innerText = '';
    }
}
vercode.appendVer = function (v) {
    var codeLength = 4;//   验证码长度
    if (document.getElementById('code').innerText.length == codeLength) {
        document.getElementById('verset').style.display = 'none';
        return;
    }
    document.getElementById('code').innerText += v.innerText;
};
vercode.Init = function (apiPath, userId) {
    let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    //arr.sort(() => Math.random() - 0.5);    //  如果希望键盘顺序显示,注释改行
    arr.splice(9, 0, 99);
    arr.push(99);

    var template = "";
    for (var i = 0; i < 12; i++) {
        if (i == 9 ) {
            template += '<li onclick="vercode.generateVerifyImage()">重置</li>';
        }
        else if (i == 11) {
            template += '<li onclick="document.getElementById(\'verset\').style.display = \'none\'">确认</li>';
        }
        else {
            template += '<li onclick="vercode.appendVer(this)">' + arr[i] + '</li>';
        }
    }
    $(".verset ul").html(template);
    $("#verImage").click(function () {
        vercode.generateVerifyImage();
    })
    $("#verImage").attr("title", "点击后刷新验证码");
    vercode.apiPath = apiPath;
    vercode.userId = userId;
};

 

vercode.css

.vercode {
    width: 330px;
    margin:10px 0px;
}

    .vercode .code {
        display: inline-block;
        width: 45%;
        margin-right: 5px;
        font-family: 'Arial Unicode MS';
        font: 20px/38px bold;
        line-height: 38px;
        height: 38px;
        text-align: center;
        float: left;
        border-radius: 5px;
        background-color: #f8f4f4;
        text-shadow: 2px 2px 2px #52c574;
    }

            .vercode .verimg {
                display: inline-block;
                width: 45%;
                margin-left: 5px;
                line-height: 38px;
                height: 38px;
                text-align: center;
                cursor: pointer;
            }

                .vercode .verimg img {
                    display: inline-block;
                    width: 100%;
                    height: 38px;
                    vertical-align: middle;
                    line-height: 38px;
                    text-align: center;
                    cursor: pointer;
                }

.verset {
    width: 330px;
    padding: 0px;
    text-align: left;
    height: 100px;
    display: none;
    margin: 10px;
    height: 120px;
    position: fixed;
    top: 0px;
    left: 0px;
    z-index: 9999;
}

        .verset ul {
            width: 76%;
            height: 126px;
            line-height: 28px;
            margin: 0px;
            clear: both;
            padding: 5px 0px;
            padding-left: 5px;
        }

            .verset ul li {
                float: left;
                list-style: none;
                width: 31%;
                background-color: #fff; /*  修改按钮背景色   */
                text-align: center;
                border: 1px solid #666;
                color: #666; /*  修改按钮字体色   */
                border-radius: 5px;
                cursor: pointer;
                margin:1px;
            }

  login.html 登录示例

<li>
                    <em></em>
                    <input type="text" id="userId" tabindex="1" placeholder="请输入用户名" class="longcode" />
                    <label id="imgUid" class="error_msg"></label>
                </li>
                <li>
                    <em class="code"></em>
                    <input type="password" id="pwd" placeholder="请输入密码" class="longcode on" tabindex="2" />
                    <label id="imgPwd" class="error_msg"></label>
                </li>


                <li>
                    <div class="vercode" id="vercode">
                        <div class="code" id="code"></div>
                        <div class="verimg">
                            <img src="" id="verImage" />
                        </div>
                    </div>

                </li>
...

 <div class="verset" id="verset">
            <ul></ul>
        </div>

  login.html 登录访问服务器javascript方法

<script>
        function syslogin() {
            $.post('/Login/Verify', { userId: $("#userId").val(), pwd: $("#pwd").val(), clientCode: $("#code").text() }, function (res) {
                if (res.code != 0) {
                    document.getElementById('lblMessage').innerText = res.msg;
                    document.getElementById('lblMessage').style.color = "red";
                }
                else {
                    document.getElementById('lblMessage').innerText = res.msg;
                    document.getElementById('lblMessage').style.color = "green";
                    //setTimeout(function () {
                    //    location.href = '/Basic/IcsonFrame_DBC_Table.aspx';
                    / 
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
  • jQuery Ajax 实用方法精要

    jQuery Ajax 实用方法精要

    本文全面解析jQuery Ajax核心方法,包括load()、get()、post()的用法,以及底层$.aj...
  • 渐变页面

    渐变页面

    lt;!DOCTYPE htmlgt;lt;html lang=quot;enquot;gt; lt;headgt; lt;meta charset=quot;UTF-8quot;gt; lt;meta...
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信