最近搞得單點登錄碰到了很多問題,具體的問題有如下幾個:
①如何獲取usbkey的值
②要實現的單點登錄的方案
③如何獲取多個key的值,并進行選擇登錄
④ie跳谷歌訪問業務界面
注:最后將實現代碼附上,希望對大家有所幫助
1、具體實現代碼如下
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登錄</title><script type="text/javascript" src='../js/jquery-10.1.min.js'></script>
</head>
<body onload="doLogin()">
<object classid="clsid:000000-AAAA-4CC2-83C7-34SEEE98B6E" id="usb_ocx" name="usb_ocx" style="VISIBILITY:hidden"codebase="IB_USBKEY.ocx" width="100" height="10"></object>
</body>
<script>//執行單點登錄function doLogin() {try{rtn1 = usb_ocx.setCurrentDev();}catch (e){}var caServerIp="127.0.0.1";var username="";rtn=usb_ocx.VgetnameFirst(caServerIp,"1");if(rtn.match("#.")){if(rtn=="#2"){rtn=usb_ocx.Vgetname("password123",caServerIp,"1");if(rtn.match("#.")){if(rtn=="#2"){alert("狀態錯誤!需要輸入PIN碼")}}return;}else{alert("沒有插入key或者key錯誤!")return;}}if(rtn.indexOf("\\")==-1){alet("USBKEY not find username");return;}else{username = rtn.substring(rtn.lastIndexOf("\\")+1,rtn.length);if(username==""||username==null){alet("USBKEY not find username");return;}}$.ajax({url: '/bbdq-collection-tool/api/login/doLoginSign?userId='+username,method: "GET",async: true,success: function (data) {// 在active前面打印日志,跳轉有時會出現問題,只有打開f12才能跳轉//console.log(data);var obj = new ActiveXObject("WScript.Shell")//啟動 Chrome 瀏覽器袁轉向登錄頁面obj.Run("chrome " + data, 0, false);}})}
</script>
2、上面代碼分析及注意點
①必須放到里面,必須通過body的onload方法去加載js
問題1:剛開始把放到外面,用jquery的初始化函數去實現發現不行;
問題2:要獲取2個key,這行代碼必須得有
rtn1 = usb_ocx.setCurrentDev();
問題3:ie跳谷歌跳轉失敗,首先代碼必須是以下這樣的:
var obj = new ActiveXObject("WScript.Shell")
//啟動 Chrome 瀏覽器袁轉向登錄頁面
obj.Run("chrome https://www.baidu.com", 0, false);
問題3.1:ie跳轉谷歌需要配置activex
問題3.2:在active前面打印日志,跳轉有時會出現問題,只有打開f12才能跳轉