极验验证的使用方法

1,本人使用PhP进行开发,官方相关文档:
https://docs.geetest.com/install/deploy/server/php

2,在极验官网注册一个账号,获取公钥(id)、私钥(key),以便后端使用

前端代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>登入</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
    <link rel="stylesheet" href="/layuiadmin/style/login.css" media="all">
</head>
<body>

<div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: none;">

    <div class="layadmin-user-login-main">
        <div class="layadmin-user-login-box layadmin-user-login-header">
            <h2>60码代理后台登录</h2>
            <p></p>
        </div>
        <div class="layadmin-user-login-box layadmin-user-login-body layui-form">
            <div class="layui-form-item">
                <label class="layadmin-user-login-icon layui-icon layui-icon-username" for="LAY-user-login-username"></label>
                <input type="text" name="username"  id="username" lay-verify="required" placeholder="用户名" class="layui-input">
            </div>
            <div class="layui-form-item">
                <label class="layadmin-user-login-icon layui-icon layui-icon-password" for="LAY-user-login-password"></label>
                <input type="password" name="password" id="password" lay-verify="required" placeholder="密码" class="layui-input">
            </div>
            <div class="layui-form-item" id="captcha">
                <div id="text">
                    行为验证™ 安全组件加载中
                </div>
                <div id="wait" class="show">
                    <div class="loading">
                        <div class="loading-dot"></div>
                        <div class="loading-dot"></div>
                        <div class="loading-dot"></div>
                        <div class="loading-dot"></div>
                    </div>
                </div>
            </div>

            <div class="layui-form-item">
                <button class="layui-btn layui-btn-fluid" lay-submit lay-filter="LAY-user-login-submits" id="btn">登 入</button>
            </div>
        </div>
    </div>


</div>

<script src="/js/Lib/dist/jquery.js"></script>
<script src="/js/Lib/dist/gt.js"></script>
<script src="/layuiadmin/layui/layui.js"></script>
<script>
    layui.config({
        base: '/layuiadmin/' //静态资源所在路径
    }).extend({
        index: 'lib/index' //主入口模块
    }).use(['index', 'user'], function(){
        var $ = layui.$
            ,setter = layui.setter
            ,admin = layui.admin
            ,form = layui.form
            ,router = layui.router()
            ,search = router.search;


    });


    var handler = function (captchaObj) {
        captchaObj.appendTo('#captcha');
        captchaObj.onReady(function () {
            $("#wait").hide();
        });
        $('#btn').click(function () {
            var result = captchaObj.getValidate();
            if (!result) {
                layer.msg('请完成滑动验证', {
                    offset: '15px'
                    ,icon: 2
                    ,time: 1000
                });
                return;
            }
            $.ajax({
                url: '/getVerify?t=' + (new Date()).getTime(),
                type: 'get',
                dataType: 'json',
                data: {
                    username: $('#username').val(),
                    password: $('#password').val(),
                    geetest_challenge: result.geetest_challenge,
                    geetest_validate: result.geetest_validate,
                    geetest_seccode: result.geetest_seccode
                },
                success: function (data) {
                    if (data.success == 1) {
                        var username = $('#username').val();
                        var password = $('#password').val();
                        $.ajax({
                            url: '/user/login',
                            type: 'POST',
                            data: {
                                username:username,
                                password:password
                            },
                            success: function (result) {
                                if(result.code == 200){
                                    layer.msg('登入成功', {
                                        offset: '15px'
                                        ,icon: 1
                                        ,time: 1000
                                    }, function(){
                                        location.href = '/user'; //后台主页
                                    });
                                }else{
                                    layer.msg(result.message, {
                                        offset: '15px'
                                        ,icon: 2
                                        ,time: 1000
                                    });
                                }

                            }
                        });
                    } else if (data.status === 'fail') {
                        alert('验证失败');
                        captchaObj.reset();
                    }
                }
            });
        })
    };

    $.ajax({
        url: '/getVerify?t=' + (new Date()).getTime(),
        type: "get",
        dataType: "json",
        success: function (data) {

            $('#text').hide();
            $('#wait').show();
            // 调用 initGeetest 进行初始化
            // 参数1:配置参数
            // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它调用相应的接口
            initGeetest({
                // 以下 4 个配置参数为必须,不能缺少
                gt: data.gt,
                challenge: data.challenge,
                offline: !data.success, // 表示用户后台检测极验服务器是否宕机
                new_captcha: data.new_captcha, // 用于宕机时表示是新验证码的宕机

                product: "popup", // 产品形式,包括:float,popup
                lang: 'zh-cn',
                width: "300px",
                https: true

                // 更多配置参数说明请参见:http://docs.geetest.com/install/client/web-front/
            }, handler);
        }
    });

</script>
</body>
</html>

后端代码

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use GeetestLib;

class GeetestVerify extends Controller
{
    public function GetVerify(Request $request)
    {
        $GtSdk = new GeetestLib(config('app.GEE_ID'), config('app.GEE_KEY'));
        $user_id = getip($request);
        $status = $GtSdk->pre_process($user_id);
        $data = array(
            'gtserver' => $status,
            'user_id' => $user_id,
            'client_type' => 'web',
            'ip_address' => getip($request)
        );
        session(['verify.geetest.data' => $data]);
        return response($GtSdk->get_response_str())->header('content-type', 'application/json');
    }
}

猜你喜欢

转载自blog.csdn.net/m0_37632915/article/details/89475397
今日推荐