function login(publicKeyExponent, publicKeyModulus) { //当为1时候添加id,来设置对应的样式 if (piccode == "1") { //IE情况下 if (window.navigator.userAgent.indexOf("MSIE") >= 1 || !!window.ActiveXObject || "ActiveXObject" in window) { $('.dlts').attr('id', 'dlts2'); } else { $('.dlts').attr('id', 'dlts'); } } else { $('.dlts').attr('id', 'dlts1'); } $(".dlts").html('正在登录,请稍等'); var userName = $("#loginname").val(); var loginName = $("#loginname").val(); var password = $("#loginpass").val(); if (userName == null || userName == "" || $.trim(userName) == "") { $(".dlts").html("用户名不能为空"); return; } if (password == null || password == "" || $.trim(password) == "") { $(".dlts").html("密码不能为空"); return; } //验证码校验 if (!input4Onblur() && piccode == "1") { $(".dlts").html("验证码错误"); refreshCode(); return; } $("#lb").addClass("login_over"); var k1 = "012C2C9BA925FAF8045B2FD9B02A2664"; var k2 = "987KS98EHKAL0AFJJ32JDUEO973JK2"; var k3 = "8JSDBWOIU49IBE7DGSKDH5UDHENDJ4889"; var uname = userName; var pword = password; //加密 var userName = strEnc(userName, k1, k2, k3); var password = strEnc(password, k1, k2, k3); var pmosC = strEnc(para_val, k1, k2, k3); var verifyCode = $("#code").val(); $.ajax({ url: '../loginServlet', data: 'userName=' + userName + "&password=" + password + "&verifyCode=" + verifyCode + "&pmosC=" + pmosC, dataType: 'json', type: 'post', success: function(result) { //验证码校验 if (result.isverifyCode == "NO") { $(".dlts").html("验证码错误"); refreshCode(); return; } //判断用户是否已被锁 if (result.isLock == "YES") { $(".dlts").html("用户已被锁定,请联系管理员解锁"); $("#lb").removeClass("login_over"); refreshCode(); return; } if (result.status == "success") { var news = result.isnewcomers; //然后验证用户名和KEY是否绑定 if (result.isUseKey == "YES") { loginByKey(userName, news,password) } else { loginNotKey(result,password,userName,news); } } else { //如果本地登录失败,且登录人为售电公司,则尝试登录总部环境 if (result.hasOwnProperty("IS_SELLER_REGIST_TOP") && result.IS_SELLER_REGIST_TOP == 1 && result.hasOwnProperty("currentMarket") && result.currentMarket != "91812") { if(registOnNewPlatform == "1"){ loginNewPlatform(uname, pword, userName, password); }else{ var url = result.REGIST_DIRECT_URL trylinkedzb(userName, password, url, pmosC); } } else { //本地登录报错提示 if (result.loginNum == 0) { $(".dlts").html("输入密码错误达到3次,用户已被锁定,请联系管理员解锁"); $("#lb").removeClass("login_over"); } else if (result.loginNum == -1) { $(".dlts").html("用户名不存在,请重试"); $("#lb").removeClass("login_over"); } else if (result.loginNum == -2) { $(".dlts").html("用户名或密码错误,请重试"); $("#lb").removeClass("login_over"); // } } else if (result.hasOwnProperty('flag') && result.flag == -101) { $(".dlts").html("注册地与当前平台不一致"); $("#lb").removeClass("login_over"); } else { $(".dlts").html("用户名或密码不正确,您还有" + result.loginNum + "次输入机会"); $("#lb").removeClass("login_over"); } } refreshCode(); } } }); } function loginByKey(userName, news,password) { var browser = BrowserInfo(); if ("Internet Explorer" == browser.name || "Netscape" == browser.name) { var CryptoAgency = document.getElementById("CryptoAgent"); var CertSubjectDN; try { CertSubjectDN = CryptoAgency.SelectSignCertificate("", ""); } catch (err) {} if (!CertSubjectDN) { //如果证书不存在 var LastErrorDesc; try { LastErrorDesc = CryptoAgency.GetLastErrorDesc(); } catch (e) {} if (LastErrorDesc) { $(".dlts").html(LastErrorDesc); } else { $(".dlts").html("请卸载并重新安装插件,然后插入证书使用"); } $("#lb").removeClass("login_over"); refreshCode(); return false; } else { var selectedAlg = "sha-1"; var Signature = CryptoAgency.SignMessage(userName, selectedAlg); //加密 //因签名后的字符串中含有"+",提交到后台后如果不处理会变成" ",所以用",,,"替换"+",后台再用"+"替换",,," var sendData = 'username=' + userName + "&signUserName=" + Signature.replace(/\+/g, ",,,"); loginCfcaServlet(sendData,news,password,userName); refreshCode(); } } else if(("Chrome" == browser.name && parseInt(browser.version) > 30) || ("Firefox" == browser.name && parseInt(browser.version) > 30) || ("Edge" == browser.name)){ CryptoAgent.selectSignCertificate("", "", function callback(result) { if (0 == result.error) { var CertSubjectDN = result.value; if (!CertSubjectDN){ //如果证书不存在 var LastErrorDesc; try { LastErrorDesc = CryptoAgency.GetLastErrorDesc(); } catch (e) {} if (LastErrorDesc) { $(".dlts").html(LastErrorDesc); } else { $(".dlts").html("请先安装插件,然后插入证书使用"); } $("#lb").removeClass("login_over"); refreshCode(); return false; } else { var selectedAlg = "SHA-1"; CryptoAgent.signMessage(userName, selectedAlg, function callback(result) { if (0 == result.error) { Signature = result.value; var sendData = 'username=' + userName + "&signUserName=" + Signature.replace(/\+/g, ",,,"); //证书登陆 loginCfcaServlet(sendData,news,password,userName); } else { CryptoAgent.GetLastErrorDesc(GetLastErrorCallback); } }); refreshCode(); } } else { CryptoAgent.GetLastErrorDesc(GetLastErrorCallback); } }); }else{ alert("Unsupported browser!"); } } function loginCfcaServlet(sendData,news,password,userName) { $.ajax({ url: '../loginCfcaServlet', data: sendData, dataType: 'json', async: false, type: 'post', success: function(result) { if (result.status.indexOf("true") != -1) { if (result.status.length > 4) { var invalidDateString = result.status.replace("true", ""); if (invalidDateString == "outdated") { $(".login_all").hide(); $.messager.defaults = { ok: '好的', cancel: '跳过' }; $.messager.confirm('确认', '您的数字证书已失效,请尽快延期!', function(r) { //新手上路 firstLogin(news,password,userName); }); } else { $(".login_all").hide(); $.messager.defaults = { ok: '好的', cancel: '跳过' }; $.messager.confirm('确认', '您的数字证书将在' + invalidDateString + '失效,请尽快延期!', function(r) { //新手上路 firstLogin(news,password,userName); }); } } else { //新手上路 firstLogin(news,password,userName); } } else if (result.status == "gateWayError") { $(".dlts").html("证书未认证通过,请确定此证书的有效性"); } else if (result.status == "notyet") { $(".dlts").html("证书尚未生效"); } else if (result.status == "wrongCa") { $(".dlts").html("证书日期非法"); } else { $(".dlts").html("证书与用户不匹配"); } } }); } //新手上路 function firstLogin(news,password,userName) { if (news == "1") { //新手上路 $.ajax({ url: '../../pmos/rest/common/getInitInfo', type: 'get', async: false, success: function(rc) { if (rc.successful) { participanttype = rc.resultValue.participanttype; if (participanttype != "1") { window.location.href = "newcomers.jsp"; } else { doSlaveOrMasterLogin(password); window.location.href = "index.jsp" + '?paramA=' + userName + "¶mB=" + password; } } } }); } else { doSlaveOrMasterLogin(password); window.location.href = "index.jsp" + '?paramA=' + userName + "¶mB=" + password; } } function loginNotKey(result,password,userName,news) { if (result.loginType != undefined && result.loginType == "reg") { //注册中的用户 if (result.hasOwnProperty("renewableType") && result.renewableType == "ok") { window.location.href = "/RenewableEnergySubject/index/renewableParticipant.jsp?show=show"; } else if (result.hasOwnProperty("IS_OLDORNEW") && result.IS_OLDORNEW == 0) { window.location.href = "regIndex.jsp?pmosA=" + userName + "&pmosB=" + password + "&marketid=" + para_val; } else if (result.hasOwnProperty("IS_SELLER_REGIST_TOP") && result.IS_SELLER_REGIST_TOP == 1 && result.hasOwnProperty("participanttype") && result.participanttype == 6) { //新用户,且是售电公司 var url = result.REGIST_DIRECT_URL window.location.href = "regIndexzb.jsp?urlzb=" + url + "&pmosA=" + userName + "&pmosB=" + password + "&marketid=" + para_val; } else { console.log("未生效用户,登录失败"); } } else { $.ajax({ url: '../UserSkinServlet?flag=99', type: 'post', async: false, dataType: 'text', success: function() { //新手上路 firstLogin(news,password,userName); } }); } } function GetLastErrorCallback(result) { alert(result.value); } function BrowserInfo() { var res = { name : "", version : "", }; var reg; var userAgent = self.navigator.userAgent; if (reg = /edge\/([\d\.]+)/i.exec(userAgent)) { res.name = "Edge"; res.version = reg[1]; } else if (/msie/i.test(userAgent)) { res.name = "Internet Explorer"; res.version = /msie ([\d\.]+)/i.exec(userAgent)[1]; } else if (/Trident/i.test(userAgent)) { res.name = "Internet Explorer"; res.version = /rv:([\d\.]+)/i.exec(userAgent)[1]; } else if (/chrome/i.test(userAgent)) { res.name = "Chrome"; res.version = /chrome\/([\d\.]+)/i.exec(userAgent)[1]; } else if (/safari/i.test(userAgent)) { res.name = "Safari"; res.version = /version\/([\d\.]+)/i.exec(userAgent)[1]; } else if (/firefox/i.test(userAgent)) { res.name = "Firefox"; res.version = /firefox\/([\d\.]+)/i.exec(userAgent)[1]; } return res; } function OnLoad() { try { var browser = BrowserInfo(); if ("Internet Explorer" == browser.name || "Netscape" == browser.name) { var eDiv = document.createElement("div"); if (window.navigator.cpuClass == "x86") { eDiv.innerHTML = ""; } else { eDiv.innerHTML = ""; } document.body.appendChild(eDiv); CryptoAgent = document.getElementById("CryptoAgent"); } else if (("Chrome" == browser.name && parseInt(browser.version) > 30) || ("Firefox" == browser.name && parseInt(browser.version) > 30) || ("Edge" == browser.name)) { CryptoAgent = new wsCryptokit(); CryptoAgent.init(); } else { alert("Unsupported browser!"); } } catch (e) { alert(e); return; } } function OnUnLoad() { try { var browser = BrowserInfo(); if ("Internet Explorer" == browser.name) { } else { CryptoAgent.uninit(); } } catch (e) { alert(e); return; } }