window.isBusy = false; // 创建验证码 function createCode() { var codeLength = 4, code = ""; // 验证码的长度 var checkCode = document.getElementById("checkCode"); var codeChars = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); for (var i = 0; i < codeLength; i++) { var charNum = Math.floor(Math.random() * 10); code += codeChars[charNum]; } if (checkCode) { checkCode.innerHTML = code; } } // 获取公钥 function getPublicKey() { $.get("getPublicKey", function (rs) { if (rs && rs.code == 200) { window.encrypt = new JSEncrypt(); encrypt.setPublicKey(rs.result); } }); } // 验证 function sysValidate() { // 验证用户名与密码 var theUsername = document.getElementById("username").value; if (theUsername.length <= 0) { $("#eMsg").html("提示:请输入用户名!"); $("#username").focus(); return false; } var thePassword = document.getElementById("password").value; if (thePassword.length <= 0) { $("#eMsg").html("提示:请输入密码!"); $("#password").focus(); return false; } /*if (!isValid(thePassword)) { $("#eMsg").html("提示:密码为8-20位包含字母、数字和特殊字符!"); $("#password").focus(); return false; }*/ // 验证验证码 var inputCode = document.getElementById("inputCode").value; if (inputCode.length <= 0) { $("#eMsg").html("提示:请输入验证码!"); $("#inputCode").focus(); return false; } var code = document.getElementById("checkCode").innerHTML; if (inputCode.toUpperCase() != code.toUpperCase()) { $("#eMsg").html("提示:验证码输入有误!"); $("#inputCode").val("").focus(); createCode(); return false; } return true; } // login function sysLogin() { if (isBusy || !sysValidate()) { return; } isBusy = true; var username = $.trim($("#username").val()); var password = $("#password").val(); var service = getQueryStr("service"); var data = { "uid": encrypt.encrypt(username), "pwd": encrypt.encrypt(password) }; ajax("login", "POST", JSON.stringify(data), null, null, function (rs) { isBusy = false; if (!rs || rs.code !== 200) { createCode(); var msg = rs && rs.msg ? rs.msg : "登录失败!"; $("#eMsg").html(msg); return; } if (rs.msg) alert(rs.msg); var service = getQueryStr("service"); if (service) { service += (service.indexOf("?") > -1 ? "&" : "?") + "token=" + rs.result.token; location.href = service; return; } location.href = location.href.replace("/sign/toLogin", "/sign/toIndex"); }, function () { isBusy = false; alert("登录出错,请联系管理员!"); }); } // Ajax function ajax(url, type, data, dataType, contentType, fn, ex) { $.ajax({ url: url, type: type, data: data, dataType: dataType || "json", // html、json、jsonp、script、text contentType: contentType || "application/json", // "application/x-www-form-urlencoded" success: function (data) { fn(data); }, error: function (e) { console.error(e); ex(e); } }); } // 获取URL参数 function getQueryStr(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); var r = window.location.search.substr(1).match(reg); if (r != null) { return decodeURI(r[2]); } return null; } // 键盘按下事件 document.onkeydown = function (e) { var ev = window.event || e; var code = ev.keyCode || ev.which || ev.charCode; if (code == 13) { sysLogin(); } } // 密码是否合规 function isValid(pwd) { if (!pwd) return false; var regex = new RegExp('^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{12,20}$'); return regex.test(pwd); }