diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..6ee957a Binary files /dev/null and b/.DS_Store differ diff --git a/.classpath b/.classpath index fb26e58..ebb394e 100644 --- a/.classpath +++ b/.classpath @@ -8,7 +8,7 @@ - - + + diff --git a/ReadMe.rst b/ReadMe.rst index f566654..50418ca 100644 --- a/ReadMe.rst +++ b/ReadMe.rst @@ -11,8 +11,11 @@ 如果需要移动端的canvas功能,请参考canvas的前端文档。 +在进行此项目前,请您务必仔细阅读了:极验用户引导手册 [#geetest-user-guid]_ +.. [#geetest-user-guid] `极验用户必读 `__ + 核心SDK库 --------------------- @@ -58,6 +61,13 @@ #. 打开tomcat #. 在浏览器中访问http://localhost:8080/gt-java-sdk/login.jsp即可看到Demo界面 +集成验证服务到自己项目 +========================= + +1. 将com.geetest.sdk.java这个包引入项目中 +#. 根据自身使用情况修改前端代码调用验证码,前端文档 http://www.geetest.com/install/sections/idx-client-sdk.html#web +#. 修改后台代码,具体可以参考demo中的后台进行修改 +* 如果是web端使用,请把WebContent中的gt.js放到可以访问的地方,并将web端中引入gt.js的地方修改成存放gt.js的地址 failback效果展示 ========================= @@ -71,19 +81,38 @@ failback效果展示 failback效果 ----------------------- +---------------------- .. image:: ./2015-06-16-002.png + 联系作者 ============= -QQ:1295351490 +QQ:383449573 发布日志(由新到旧) -=================================== +===================================' + +3.3.0 +--------------------------- +- 修改demo的展现形式,增添一种mobile形式的验证码 +- demo后台增添mobile形式验证码的后台,mobile形式的验证码需要使用特定的id与key + + + +3.2.0 +--------------------------- +- 增加新接口,可以在两次验证过程中传入自定义userid,如果两次传入的userid不同,验证无法通过 + + + +3.1.0 +--------------------------- +- 将注册完后获取的challenge进行一层加密再返回 + 3.0.1 diff --git a/WebContent/WEB-INF/web.xml b/WebContent/WEB-INF/web.xml index 02ec868..7cc3eed 100644 --- a/WebContent/WEB-INF/web.xml +++ b/WebContent/WEB-INF/web.xml @@ -15,54 +15,34 @@ com.geetest.sdk.java.web.demo.VerifyLoginServlet - - - - - StartMsgCaptchaServlet - StartMsgCaptchaServlet - - com.geetest.sdk.java.msg.demo.StartMsgCaptchaServlet - - VerifyGeetestServlet - VerifyGeetestServlet + MobileStartCaptchaServlet + MobileStartCaptchaServlet - com.geetest.sdk.java.msg.demo.VerifyGeetestServlet + com.geetest.sdk.java.web.mobiledemo.StartCaptchaServlet - VerifyMsgServlet - VerifyMsgServlet + MobileVerifyLoginServlet + MobileVerifyLoginServlet - com.geetest.sdk.java.msg.demo.VerifyMsgServlet + com.geetest.sdk.java.web.mobiledemo.VerifyLoginServlet - - - VerifyLoginServlet - /VerifyLoginServlet + /pc-geetest/validate StartCaptchaServlet - /StartCaptchaServlet + /pc-geetest/register - - - StartMsgCaptchaServlet - /StartMsgCaptchaServlet + MobileVerifyLoginServlet + /mobile-geetest/validate - VerifyGeetestServlet - /VerifyGeetestServlet - - - - - VerifyMsgServlet - /VerifyMsgServlet + MobileStartCaptchaServlet + /mobile-geetest/register diff --git a/WebContent/gt.js b/WebContent/gt.js new file mode 100644 index 0000000..7ec951e --- /dev/null +++ b/WebContent/gt.js @@ -0,0 +1,276 @@ +/* initGeetest 1.0.0 + * 用于加载id对应的验证码库,并支持宕机模式 + * 暴露 initGeetest 进行验证码的初始化 + * 一般不需要用户进行修改 + */ +(function (global, factory) { + "use strict"; + if (typeof module === "object" && typeof module.exports === "object") { + // CommonJS + module.exports = global.document ? + factory(global, true) : + function (w) { + if (!w.document) { + throw new Error("Geetest requires a window with a document"); + } + return factory(w); + }; + } else { + factory(global); + } +})(typeof window !== "undefined" ? window : this, function (window, noGlobal) { + "use strict"; + if (typeof window === 'undefined') { + throw new Error('Geetest requires browser environment'); + } + var document = window.document; + var Math = window.Math; + var head = document.getElementsByTagName("head")[0]; + + function _Object(obj) { + this._obj = obj; + } + + _Object.prototype = { + _each: function (process) { + var _obj = this._obj; + for (var k in _obj) { + if (_obj.hasOwnProperty(k)) { + process(k, _obj[k]); + } + } + return this; + } + }; + function Config(config) { + var self = this; + new _Object(config)._each(function (key, value) { + self[key] = value; + }); + } + + Config.prototype = { + api_server: 'api.geetest.com', + protocol: 'http://', + type_path: '/gettype.php', + fallback_config: { + slide: { + static_servers: ["static.geetest.com", "dn-staticdown.qbox.me"], + type: 'slide', + slide: '/static/js/geetest.0.0.0.js' + }, + fullpage: { + static_servers: ["static.geetest.com", "dn-staticdown.qbox.me"], + type: 'fullpage', + fullpage: '/static/js/fullpage.0.0.0.js' + } + }, + _get_fallback_config: function () { + var self = this; + if (isString(self.type)) { + return self.fallback_config[self.type]; + } else if (self.new_captcha) { + return self.fallback_config.fullpage; + } else { + return self.fallback_config.slide; + } + }, + _extend: function (obj) { + var self = this; + new _Object(obj)._each(function (key, value) { + self[key] = value; + }) + } + }; + var isNumber = function (value) { + return (typeof value === 'number'); + }; + var isString = function (value) { + return (typeof value === 'string'); + }; + var isBoolean = function (value) { + return (typeof value === 'boolean'); + }; + var isObject = function (value) { + return (typeof value === 'object' && value !== null); + }; + var isFunction = function (value) { + return (typeof value === 'function'); + }; + var callbacks = {}; + var status = {}; + var random = function () { + return parseInt(Math.random() * 10000) + (new Date()).valueOf(); + }; + var loadScript = function (url, cb) { + var script = document.createElement("script"); + script.charset = "UTF-8"; + script.async = true; + script.onerror = function () { + cb(true); + }; + var loaded = false; + script.onload = script.onreadystatechange = function () { + if (!loaded && + (!script.readyState || + "loaded" === script.readyState || + "complete" === script.readyState)) { + + loaded = true; + setTimeout(function () { + cb(false); + }, 0); + } + }; + script.src = url; + head.appendChild(script); + }; + var normalizeDomain = function (domain) { + return domain.replace(/^https?:\/\/|\/$/g, ''); + }; + var normalizePath = function (path) { + path = path.replace(/\/+/g, '/'); + if (path.indexOf('/') !== 0) { + path = '/' + path; + } + return path; + }; + var normalizeQuery = function (query) { + if (!query) { + return ''; + } + var q = '?'; + new _Object(query)._each(function (key, value) { + if (isString(value) || isNumber(value) || isBoolean(value)) { + q = q + encodeURIComponent(key) + '=' + encodeURIComponent(value) + '&'; + } + }); + if (q === '?') { + q = ''; + } + return q.replace(/&$/, ''); + }; + var makeURL = function (protocol, domain, path, query) { + domain = normalizeDomain(domain); + + var url = normalizePath(path) + normalizeQuery(query); + if (domain) { + url = protocol + domain + url; + } + + return url; + }; + var load = function (protocol, domains, path, query, cb) { + var tryRequest = function (at) { + + var url = makeURL(protocol, domains[at], path, query); + loadScript(url, function (err) { + if (err) { + if (at >= domains.length - 1) { + cb(true); + } else { + tryRequest(at + 1); + } + } else { + cb(false); + } + }); + }; + tryRequest(0); + }; + var jsonp = function (domains, path, config, callback) { + if (isObject(config.getLib)) { + config._extend(config.getLib); + callback(config); + return; + } + if (config.offline) { + callback(config._get_fallback_config()); + return; + } + var cb = "geetest_" + random(); + window[cb] = function (data) { + if (data.status === 'success') { + callback(data.data); + } else if (!data.status) { + callback(data); + } else { + callback(config._get_fallback_config()); + } + window[cb] = undefined; + try { + delete window[cb]; + } catch (e) { + } + }; + load(config.protocol, domains, path, { + gt: config.gt, + callback: cb + }, function (err) { + if (err) { + callback(config._get_fallback_config()); + } + }); + }; + var throwError = function (errorType, config) { + var errors = { + networkError: '网络错误' + }; + if (typeof config.onError === 'function') { + config.onError(errors[errorType]); + } else { + throw new Error(errors[errorType]); + } + }; + var detect = function () { + return !!window.Geetest; + }; + if (detect()) { + status.slide = "loaded"; + } + var initGeetest = function (userConfig, callback) { + var config = new Config(userConfig); + if (userConfig.https) { + config.protocol = 'https://'; + } else if (!userConfig.protocol) { + config.protocol = window.location.protocol + '//'; + } + jsonp([config.api_server || config.apiserver], config.type_path, config, function (newConfig) { + var type = newConfig.type; + var init = function () { + config._extend(newConfig); + callback(new window.Geetest(config)); + }; + callbacks[type] = callbacks[type] || []; + var s = status[type] || 'init'; + if (s === 'init') { + status[type] = 'loading'; + callbacks[type].push(init); + load(config.protocol, newConfig.static_servers || newConfig.domains, newConfig[type] || newConfig.path, null, function (err) { + if (err) { + status[type] = 'fail'; + throwError('networkError', config); + } else { + status[type] = 'loaded'; + var cbs = callbacks[type]; + for (var i = 0, len = cbs.length; i < len; i = i + 1) { + var cb = cbs[i]; + if (isFunction(cb)) { + cb(); + } + } + callbacks[type] = []; + } + }); + } else if (s === "loaded") { + init(); + } else if (s === "fail") { + throwError('networkError', config); + } else if (s === "loading") { + callbacks[type].push(init); + } + }); + }; + window.initGeetest = initGeetest; + return initGeetest; +}); diff --git a/WebContent/login.jsp b/WebContent/login.jsp index b3e5763..0afcb21 100644 --- a/WebContent/login.jsp +++ b/WebContent/login.jsp @@ -6,94 +6,293 @@ + path + "/"; %> - + - -极意网络 - - - - - - - - - - + + + gt-java-sdk-demo + - +

极验验证SDKDemo

+

+
+

+ + + + + -
-

JavaEE站点安装Demo页面

-
-
- -
-
- -
+ + + - <%--Start Code--%> -
-
+ -
- -
+ +

+
+

+ +

嵌入式Demo,使用表单形式提交二次验证所需的验证结果值

+
+

+ + +

+
+

+ + +

- - -
+
+

正在加载验证码......

+

请先拖动验证码到相应位置

+
+ +
+ +

+
+

+ - -
+ - + \ No newline at end of file diff --git a/doc/allclasses-frame.html b/doc/allclasses-frame.html index b2f5e64..c066028 100644 --- a/doc/allclasses-frame.html +++ b/doc/allclasses-frame.html @@ -2,10 +2,10 @@ - + All Classes - + diff --git a/doc/allclasses-noframe.html b/doc/allclasses-noframe.html index f6cc9c2..07723e7 100644 --- a/doc/allclasses-noframe.html +++ b/doc/allclasses-noframe.html @@ -2,10 +2,10 @@ - + All Classes - + diff --git a/doc/com/geetest/sdk/java/GeetestLib.html b/doc/com/geetest/sdk/java/GeetestLib.html index 5cbb96b..b939ff1 100644 --- a/doc/com/geetest/sdk/java/GeetestLib.html +++ b/doc/com/geetest/sdk/java/GeetestLib.html @@ -2,10 +2,10 @@ - + GeetestLib - + @@ -126,40 +126,28 @@

Field Summary

static java.lang.String -fail_res  - - -static java.lang.String fn_geetest_challenge
极验验证二次验证表单数据 chllenge
- + static java.lang.String fn_geetest_seccode
极验验证二次验证表单数据 seccode
- + static java.lang.String fn_geetest_validate
极验验证二次验证表单数据 validate
- -static java.lang.String -forbidden_res  - java.lang.String gtServerStatusSessionKey
极验验证API服务状态Session Key
- -static java.lang.String -success_res  - @@ -196,7 +184,7 @@

Method Summary

Method and Description -java.lang.String +int enhencedValidateRequest(java.lang.String challenge, java.lang.String validate, java.lang.String seccode) @@ -204,35 +192,50 @@

Method Summary

-java.lang.String +int +enhencedValidateRequest(java.lang.String challenge, + java.lang.String validate, + java.lang.String seccode, + java.lang.String userid) +
服务正常的情况下使用的验证方式,向gt-server进行二次验证,获取验证结果
+ + + +int failbackValidateRequest(java.lang.String challenge, java.lang.String validate, java.lang.String seccode)
failback使用的验证方式
- + java.lang.String getResponseStr()
获取本次验证初始化返回字符串
- + java.lang.String getVersionInfo()  - + void gtlog(java.lang.String message)
输出debug信息,需要开启debugCode
- + int preProcess()
验证初始化预处理
+ +int +preProcess(java.lang.String userid) +
验证初始化预处理
+ + + + + +
    +
  • +

    preProcess

    +
    public int preProcess(java.lang.String userid)
    +
    验证初始化预处理
    +
    Parameters:
    userid -
    +
    Returns:
    1表示初始化成功,0表示初始化失败
    +
  • +
  • enhencedValidateRequest

    -
    public java.lang.String enhencedValidateRequest(java.lang.String challenge,
    -                                       java.lang.String validate,
    -                                       java.lang.String seccode)
    +
    public int enhencedValidateRequest(java.lang.String challenge,
    +                          java.lang.String validate,
    +                          java.lang.String seccode)
    服务正常的情况下使用的验证方式,向gt-server进行二次验证,获取验证结果
    Parameters:
    challenge -
    validate -
    seccode -
    -
    Returns:
    验证结果
    +
    Returns:
    验证结果,1表示验证成功0表示验证失败
    +
  • +
+ + + +
    +
  • +

    enhencedValidateRequest

    +
    public int enhencedValidateRequest(java.lang.String challenge,
    +                          java.lang.String validate,
    +                          java.lang.String seccode,
    +                          java.lang.String userid)
    +
    服务正常的情况下使用的验证方式,向gt-server进行二次验证,获取验证结果
    +
    Parameters:
    challenge -
    validate -
    seccode -
    userid -
    +
    Returns:
    验证结果,1表示验证成功0表示验证失败
@@ -417,12 +417,12 @@

enhencedValidateRequest

  • failbackValidateRequest

    -
    public java.lang.String failbackValidateRequest(java.lang.String challenge,
    -                                       java.lang.String validate,
    -                                       java.lang.String seccode)
    +
    public int failbackValidateRequest(java.lang.String challenge,
    +                          java.lang.String validate,
    +                          java.lang.String seccode)
    failback使用的验证方式
    Parameters:
    challenge -
    validate -
    seccode -
    -
    Returns:
    验证结果
    +
    Returns:
    验证结果,1表示验证成功0表示验证失败
diff --git a/doc/com/geetest/sdk/java/class-use/GeetestLib.html b/doc/com/geetest/sdk/java/class-use/GeetestLib.html index 37c7378..4fb898e 100644 --- a/doc/com/geetest/sdk/java/class-use/GeetestLib.html +++ b/doc/com/geetest/sdk/java/class-use/GeetestLib.html @@ -2,10 +2,10 @@ - + Uses of Class com.geetest.sdk.java.GeetestLib - + diff --git a/doc/com/geetest/sdk/java/package-frame.html b/doc/com/geetest/sdk/java/package-frame.html index 1f9f5cc..507477e 100644 --- a/doc/com/geetest/sdk/java/package-frame.html +++ b/doc/com/geetest/sdk/java/package-frame.html @@ -2,10 +2,10 @@ - + com.geetest.sdk.java - + diff --git a/doc/com/geetest/sdk/java/package-summary.html b/doc/com/geetest/sdk/java/package-summary.html index d9cf24c..fd377f4 100644 --- a/doc/com/geetest/sdk/java/package-summary.html +++ b/doc/com/geetest/sdk/java/package-summary.html @@ -2,10 +2,10 @@ - + com.geetest.sdk.java - + diff --git a/doc/com/geetest/sdk/java/package-tree.html b/doc/com/geetest/sdk/java/package-tree.html index dbe98b0..b1142ff 100644 --- a/doc/com/geetest/sdk/java/package-tree.html +++ b/doc/com/geetest/sdk/java/package-tree.html @@ -2,10 +2,10 @@ - + com.geetest.sdk.java Class Hierarchy - + diff --git a/doc/com/geetest/sdk/java/package-use.html b/doc/com/geetest/sdk/java/package-use.html index 55c7abd..b10c74c 100644 --- a/doc/com/geetest/sdk/java/package-use.html +++ b/doc/com/geetest/sdk/java/package-use.html @@ -2,10 +2,10 @@ - + Uses of Package com.geetest.sdk.java - + diff --git a/doc/constant-values.html b/doc/constant-values.html index d075584..637326b 100644 --- a/doc/constant-values.html +++ b/doc/constant-values.html @@ -2,10 +2,10 @@ - + Constant Field Values - + @@ -85,47 +85,26 @@

com.geetest.*

-
- -public static final java.lang.String -fail_res -"fail" - - public static final java.lang.String fn_geetest_challenge "geetest_challenge" - + public static final java.lang.String fn_geetest_seccode "geetest_seccode" - + public static final java.lang.String fn_geetest_validate "geetest_validate" - - - -public static final java.lang.String -forbidden_res -"forbidden" - - - - -public static final java.lang.String -success_res -"success" - diff --git a/doc/deprecated-list.html b/doc/deprecated-list.html index 6083725..bc6debe 100644 --- a/doc/deprecated-list.html +++ b/doc/deprecated-list.html @@ -2,10 +2,10 @@ - + Deprecated List - + diff --git a/doc/help-doc.html b/doc/help-doc.html index c6f2a6a..8d2eaa1 100644 --- a/doc/help-doc.html +++ b/doc/help-doc.html @@ -2,10 +2,10 @@ - + API Help - + diff --git a/doc/index-files/index-1.html b/doc/index-files/index-1.html index 0d07930..b9183d3 100644 --- a/doc/index-files/index-1.html +++ b/doc/index-files/index-1.html @@ -2,10 +2,10 @@ - + C-Index - + @@ -63,7 +63,7 @@ -
C D E F G J P S  +
C D E F G J P 

C

@@ -71,7 +71,7 @@

C

com.geetest.sdk.java - package com.geetest.sdk.java
 
-C D E F G J P S 
+C D E F G J P 
-
C D E F G J P S  +
C D E F G J P 

D

@@ -73,7 +73,7 @@

D

调试开关,是否输出调试日志
-C D E F G J P S 
+C D E F G J P 
-
C D E F G J P S  +
C D E F G J P 

E

@@ -72,8 +72,12 @@

E

服务正常的情况下使用的验证方式,向gt-server进行二次验证,获取验证结果
+
enhencedValidateRequest(String, String, String, String) - Method in class com.geetest.sdk.java.GeetestLib
+
+
服务正常的情况下使用的验证方式,向gt-server进行二次验证,获取验证结果
+
-C D E F G J P S 
+C D E F G J P 
-
C D E F G J P S  +
C D E F G J P 

F

-
fail_res - Static variable in class com.geetest.sdk.java.GeetestLib
-
 
failbackValidateRequest(String, String, String) - Method in class com.geetest.sdk.java.GeetestLib
failback使用的验证方式
@@ -86,10 +84,8 @@

F

极验验证二次验证表单数据 validate
-
forbidden_res - Static variable in class com.geetest.sdk.java.GeetestLib
-
 
-C D E F G J P S 
+C D E F G J P 
-
C D E F G J P S  +
C D E F G J P 

G

@@ -91,7 +91,7 @@

G

极验验证API服务状态Session Key
-C D E F G J P S 
+C D E F G J P 
-
C D E F G J P S  +
C D E F G J P 

J

@@ -71,7 +71,7 @@

J

java - package java
 
-C D E F G J P S 
+C D E F G J P 
diff --git a/doc/index-files/index-7.html b/doc/index-files/index-7.html index 6a7dbdc..660d642 100644 --- a/doc/index-files/index-7.html +++ b/doc/index-files/index-7.html @@ -2,10 +2,10 @@ - + P-Index - + @@ -38,7 +38,7 @@ -
C D E F G J P S  +
C D E F G J P 

P

@@ -72,8 +72,12 @@

P

验证初始化预处理
+
preProcess(String) - Method in class com.geetest.sdk.java.GeetestLib
+
+
验证初始化预处理
+
-C D E F G J P S 
+C D E F G J P 
@@ -94,7 +98,7 @@

P