geetest简单部署
2016-03-09 14:33
525 查看
geetest开发体验,写一下快速搭建geetst的步骤(极简模式)
已java为例
首先,我们去geetest注册一个账号 ,拿到验证所需的captcha_id和private_key(不想注册的同学可以使用下面提供测试id和key)
captcha_id:b46d1900d0a894591916ea94ea91bd2c
private_key:36fc3fe98530eea08dfc6ce76e3d24c4
然后是前端页面(弹出模式验证)
需引入(若为http协议,只需将https改为http即可)
<script src="https://static.geetest.com/static/tools/gt.js"></script>
<script src="https://api.geetest.com/get.php"></script>
在填写下面一段代码,这段代码嵌套在form表里面,用于后面的验证
<%--Start Code--%>
<div class="row">
<div id="captcha"></div>//滑动图片验证弹出层
<script src="https://static.geetest.com/static/tools/gt.js"></script>
<script>
var handler = function (captchaObj) {
// 将验证码加到id为captcha的元素里
captchaObj.appendTo("#captcha");//弹出层
captchaObj.bindOn("#loginSubmit");//弹出模式指定的触发事件
};
$.ajax({
// 获取id,challenge,success(是否启用failback)
url: "https://sso.yoju360.com/gt/init.do",//将调用这个接口进行初始化,这是我本地方法。后面会有介绍如何使用,若是http协议,直接改为http即可
type: "get",
dataType: "json", // 使用jsonp格式
success: function (data) {
if(data!=null){
// 使用initGeetest接口
// 参数1:配置参数,与创建Geetest实例时接受的参数一致
// 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
initGeetest({
gt: data.gt,
challenge: data.challenge,
product: "popup", // 产品形式 弹出
https : true,
offline: !data.success
}, handler);
}
}
});
</script>
<%--End Code–%>
完成上面步骤,页面部署基本完成。下面则是初始化geetest的接口(geetest有提供demo)
@RequestMapping(value = "/init.do")
public void init(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if(Boolean.parseBoolean(gt_open)){//极验验证,这是我自己添加的是否启动验证的开关,无需要可以直接去掉
//开启
GeetestLib gtSdk = new GeetestLib(captcha_id, private_key);//GeetestLib由geetest直接提供,大家可以去官网直接下载,官网在页面底部给出
String resStr = "{}";
//进行验证预处理
int gtServerStatus = gtSdk.preProcess();
//将服务器状态设置到session中
request.getSession().setAttribute(gtSdk.gtServerStatusSessionKey, gtServerStatus);//放入session,用于后面的验证
resStr = gtSdk.getResponseStr();
PrintWriter out = response.getWriter();
out.println(resStr);
}
}
完成这一步,可以在页面看见滑动图片验证效果了
看到这种效果,就代表前面部署成功,还剩下最后一步,就是通过在后台的验证
图片滑动验证成功后,则会进行表单提交,跳转到后台,还记得前面的 request.getSession().setAttribute(gtSdk.gtServerStatusSessionKey, gtServerStatus);这行代码吗
后面,我们可以获得表单提交过来的验证信息,进行对比验证。
下面是验证方法代码
/**
* 使用post方式,返回验证结果, request表单中必须包含challenge, validate, seccode
*/
public class VerifyLogin {
private static final long serialVersionUID = 244554953219893949L;
private final static String captcha_id = PropertyUtils.get("gt_captcha_id");
private final static String private_key = PropertyUtils.get("gt_private_key");
public boolean Verify(HttpServletRequest request) throws ServletException, IOException {
GeetestLib gtSdk = new GeetestLib(captcha_id, private_key);
String challenge = request.getParameter(GeetestLib.fn_geetest_challenge);
String validate = request.getParameter(GeetestLib.fn_geetest_validate);
String seccode = request.getParameter(GeetestLib.fn_geetest_seccode);
//从session中获取gt-server状态
int gt_server_status_code = (Integer) request.getSession().getAttribute(gtSdk.gtServerStatusSessionKey);
String gtResult = "fail";
if (gt_server_status_code == 1) {
//gt-server正常,向gt-server进行二次验证
gtResult = gtSdk.enhencedValidateRequest(challenge, validate, seccode);
System.out.println(gtResult);
} else {
// gt-server非正常情况下,进行failback模式验证
System.out.println("failback:use your own server captcha validate");
gtResult = gtSdk.failbackValidateRequest(challenge, validate, seccode);
}
if (gtResult.equals(GeetestLib.success_res)) {
// 验证成功
// PrintWriter out = response.getWriter();
// out.println(GeetestLib.success_res + ":" + gtSdk.getVersionInfo());
return true;
} else if (gtResult.equals(GeetestLib.forbidden_res)) {
// 验证被判为机器人
// PrintWriter out = response.getWriter();
// out.println(GeetestLib.forbidden_res + ":" + gtSdk.getVersionInfo());
return false;
} else {
// 验证失败
// PrintWriter out = response.getWriter();
// out.println(GeetestLib.fail_res + ":" + gtSdk.getVersionInfo());
return false;
}
}
}
上面代码可以写成公共方法,写好后,我们可以在任意地方进行验证。
比如,以user-cas为例
在这里我使用verifyLogin.Verify()进行验证,验证通过就继续往下执行,不通过就中断业务返回错误
geetest技术文档地址:http://www.geetest.com/install/
geetest官网:http://www.geetest.com/
已java为例
首先,我们去geetest注册一个账号 ,拿到验证所需的captcha_id和private_key(不想注册的同学可以使用下面提供测试id和key)
captcha_id:b46d1900d0a894591916ea94ea91bd2c
private_key:36fc3fe98530eea08dfc6ce76e3d24c4
然后是前端页面(弹出模式验证)
需引入(若为http协议,只需将https改为http即可)
<script src="https://static.geetest.com/static/tools/gt.js"></script>
<script src="https://api.geetest.com/get.php"></script>
在填写下面一段代码,这段代码嵌套在form表里面,用于后面的验证
<%--Start Code--%>
<div class="row">
<div id="captcha"></div>//滑动图片验证弹出层
<script src="https://static.geetest.com/static/tools/gt.js"></script>
<script>
var handler = function (captchaObj) {
// 将验证码加到id为captcha的元素里
captchaObj.appendTo("#captcha");//弹出层
captchaObj.bindOn("#loginSubmit");//弹出模式指定的触发事件
};
$.ajax({
// 获取id,challenge,success(是否启用failback)
url: "https://sso.yoju360.com/gt/init.do",//将调用这个接口进行初始化,这是我本地方法。后面会有介绍如何使用,若是http协议,直接改为http即可
type: "get",
dataType: "json", // 使用jsonp格式
success: function (data) {
if(data!=null){
// 使用initGeetest接口
// 参数1:配置参数,与创建Geetest实例时接受的参数一致
// 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
initGeetest({
gt: data.gt,
challenge: data.challenge,
product: "popup", // 产品形式 弹出
https : true,
offline: !data.success
}, handler);
}
}
});
</script>
<%--End Code–%>
完成上面步骤,页面部署基本完成。下面则是初始化geetest的接口(geetest有提供demo)
@RequestMapping(value = "/init.do")
public void init(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if(Boolean.parseBoolean(gt_open)){//极验验证,这是我自己添加的是否启动验证的开关,无需要可以直接去掉
//开启
GeetestLib gtSdk = new GeetestLib(captcha_id, private_key);//GeetestLib由geetest直接提供,大家可以去官网直接下载,官网在页面底部给出
String resStr = "{}";
//进行验证预处理
int gtServerStatus = gtSdk.preProcess();
//将服务器状态设置到session中
request.getSession().setAttribute(gtSdk.gtServerStatusSessionKey, gtServerStatus);//放入session,用于后面的验证
resStr = gtSdk.getResponseStr();
PrintWriter out = response.getWriter();
out.println(resStr);
}
}
完成这一步,可以在页面看见滑动图片验证效果了
看到这种效果,就代表前面部署成功,还剩下最后一步,就是通过在后台的验证
图片滑动验证成功后,则会进行表单提交,跳转到后台,还记得前面的 request.getSession().setAttribute(gtSdk.gtServerStatusSessionKey, gtServerStatus);这行代码吗
后面,我们可以获得表单提交过来的验证信息,进行对比验证。
下面是验证方法代码
/**
* 使用post方式,返回验证结果, request表单中必须包含challenge, validate, seccode
*/
public class VerifyLogin {
private static final long serialVersionUID = 244554953219893949L;
private final static String captcha_id = PropertyUtils.get("gt_captcha_id");
private final static String private_key = PropertyUtils.get("gt_private_key");
public boolean Verify(HttpServletRequest request) throws ServletException, IOException {
GeetestLib gtSdk = new GeetestLib(captcha_id, private_key);
String challenge = request.getParameter(GeetestLib.fn_geetest_challenge);
String validate = request.getParameter(GeetestLib.fn_geetest_validate);
String seccode = request.getParameter(GeetestLib.fn_geetest_seccode);
//从session中获取gt-server状态
int gt_server_status_code = (Integer) request.getSession().getAttribute(gtSdk.gtServerStatusSessionKey);
String gtResult = "fail";
if (gt_server_status_code == 1) {
//gt-server正常,向gt-server进行二次验证
gtResult = gtSdk.enhencedValidateRequest(challenge, validate, seccode);
System.out.println(gtResult);
} else {
// gt-server非正常情况下,进行failback模式验证
System.out.println("failback:use your own server captcha validate");
gtResult = gtSdk.failbackValidateRequest(challenge, validate, seccode);
}
if (gtResult.equals(GeetestLib.success_res)) {
// 验证成功
// PrintWriter out = response.getWriter();
// out.println(GeetestLib.success_res + ":" + gtSdk.getVersionInfo());
return true;
} else if (gtResult.equals(GeetestLib.forbidden_res)) {
// 验证被判为机器人
// PrintWriter out = response.getWriter();
// out.println(GeetestLib.forbidden_res + ":" + gtSdk.getVersionInfo());
return false;
} else {
// 验证失败
// PrintWriter out = response.getWriter();
// out.println(GeetestLib.fail_res + ":" + gtSdk.getVersionInfo());
return false;
}
}
}
上面代码可以写成公共方法,写好后,我们可以在任意地方进行验证。
比如,以user-cas为例
在这里我使用verifyLogin.Verify()进行验证,验证通过就继续往下执行,不通过就中断业务返回错误
geetest技术文档地址:http://www.geetest.com/install/
geetest官网:http://www.geetest.com/
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树