refactor: 同步滑块验证码脚本修复拼图不在一条直线上问题

#Issues
link https://gitee.com/LongbowEnterprise/SliderCaptcha/issues/I120S1
This commit is contained in:
Argo Zhang 2019-09-11 17:51:46 +08:00
parent df11d3cc3c
commit 3e71e3d47b
No known key found for this signature in database
GPG Key ID: 152E398953DDF19F
2 changed files with 33 additions and 9 deletions

View File

@ -24,7 +24,24 @@
maxLoadCount: 3, maxLoadCount: 3,
localImages: function () { localImages: function () {
return 'images/Pic' + Math.round(Math.random() * 4) + '.jpg'; return 'images/Pic' + Math.round(Math.random() * 4) + '.jpg';
},
verify: function (arr, url) {
var ret = false;
$.ajax({
url: url,
data: JSON.stringify(arr),
async: false,
cache: false,
type: 'POST',
contentType: 'application/json',
dataType: 'json',
success: function (result) {
ret = result;
} }
});
return ret;
},
remoteUrl: null
}; };
function Plugin(option) { function Plugin(option) {
@ -153,7 +170,7 @@
var y = that.y - that.options.sliderR * 2 - 1; var y = that.y - that.options.sliderR * 2 - 1;
var ImageData = that.blockCtx.getImageData(that.x - 3, y, L, L); var ImageData = that.blockCtx.getImageData(that.x - 3, y, L, L);
that.block.width = L; that.block.width = L;
that.blockCtx.putImageData(ImageData, 0, y); that.blockCtx.putImageData(ImageData, 0, y + 1);
that.text.text(that.text.attr('data-text')); that.text.text(that.text.attr('data-text'));
}; };
img.onerror = function () { img.onerror = function () {
@ -273,16 +290,23 @@
}; };
_proto.verify = function () { _proto.verify = function () {
var arr = this.trail; // 拖动时y轴的移动距离
var left = parseInt(this.block.style.left);
var verified = false;
if (this.options.remoteUrl !== null) {
verified = this.options.verify(arr, this.options.remoteUrl);
}
else {
var sum = function (x, y) { return x + y; }; var sum = function (x, y) { return x + y; };
var square = function (x) { return x * x; }; var square = function (x) { return x * x; };
var arr = this.trail; // 拖动时y轴的移动距离
var average = arr.reduce(sum) / arr.length; var average = arr.reduce(sum) / arr.length;
var deviations = arr.map(function (x) { return x - average; }); var deviations = arr.map(function (x) { return x - average; });
var stddev = Math.sqrt(deviations.map(square).reduce(sum) / arr.length); var stddev = Math.sqrt(deviations.map(square).reduce(sum) / arr.length);
var left = parseInt(this.block.style.left); verified = stddev !== 0;
}
return { return {
spliced: Math.abs(left - this.x) < this.options.offset, spliced: Math.abs(left - this.x) < this.options.offset,
verified: stddev !== 0 // 简单验证下拖动轨迹为零时表示Y轴上下没有波动可能非人为操作 verified: verified
}; };
}; };

View File

@ -170,7 +170,7 @@
var y = that.y - that.options.sliderR * 2 - 1; var y = that.y - that.options.sliderR * 2 - 1;
var ImageData = that.blockCtx.getImageData(that.x - 3, y, L, L); var ImageData = that.blockCtx.getImageData(that.x - 3, y, L, L);
that.block.width = L; that.block.width = L;
that.blockCtx.putImageData(ImageData, 0, y); that.blockCtx.putImageData(ImageData, 0, y + 1);
that.text.text(that.text.attr('data-text')); that.text.text(that.text.attr('data-text'));
}; };
img.onerror = function () { img.onerror = function () {