最近搞得单点登录碰到了很多问题,具体的问题有如下几个:
①如何获取usbkey的值
②要实现的单点登录的方案
③如何获取多个key的值,并进行选择登录
④ie跳谷歌访问业务界面
注:最后将实现代码附上,希望对大家有所帮助
1、具体实现代码如下
html
<!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,这行代码必须得有
javascript
rtn1 = usb_ocx.setCurrentDev();
问题3:ie跳谷歌跳转失败,首先代码必须是以下这样的:
javascript
var obj = new ActiveXObject("WScript.Shell")
//启动 Chrome 浏览器袁转向登录页面
obj.Run("chrome https://www.baidu.com", 0, false);
问题3.1:ie跳转谷歌需要配置activex
问题3.2:在active前面打印日志,跳转有时会出现问题,只有打开f12才能跳转