商业智能FineBI使用教程:[50]集成示例
的有关信息介绍如下:1.描述
为了简化步骤,用户系统BIdemo里面只有两个页面:登录页面login.html和跳转页面index.html,登录页面就是指用户系统输入用户名密码的页面,index.html则是用户名密码验证成功之后,用户系统的首页,该示例首页中以超链节点的方式将FineBI集成进来。
2.登录页面login.html
FineBI平台拥有自己的用户登录界面,需要登录才能使用,在实际情况中,企业会有自己的系统登录界面,如果将FineBI嵌入在系统中,虽然用户登录了用户系统,但是没有登录FineBI平台,当使用FineBI时,还要跳转到FineBI特定的登录页面登录,这对使用者而言非常麻烦。因此需要在用户系统的登录页面登录时同时登录FineBI平台(即将输入的用户名密码也发送到FineBI平台进行认证),从而访问FineBI时不需要再次登录。
2.1FineBI登录验证接口
用户输入用户名密码后点击提交或登录按钮时,触发loginFR()方法,该方法中实现登录事件并且通过ajax将用户名密码发送到FineBI平台进行验证,并且在验证成功时,触发html中的表单提交事件,实现登录成功页面的跳转,实现BI认证代码如下:
functionloginFR(){
varusername=document.getElementById("username").value;
varpassword=document.getElementById("password").value;
varf=document.getElementById("loginForm");
jQuery.ajax({
url:"http://localhost:8080/FineBI/ReportServer?op=fs_load&cmd=sso",//FineBI平台登录验证地址
dataType:"jsonp",//跨域采用jsonp方式
data:{"username":username,"password":password},//将用户名密码值发送过去
jsonp:"callback",
timeout:5000,//超时时间(单位:毫秒)
success:function(data){
if(data.status==="success"){//验证成功
f.submit();//页面跳转到指定页面
}elseif(data.status==="fail"){
alert("用户名密码错误!!!");//验证失败(用户名或密码错误)
}
},
error:function(){
alert("超时或服务器其他错误!!!");//验证失败(超时或服务器其他错误)
}
});
}
注:由于使用了ajax,需要引入jquery.js。
另:如果用户名密码需要编码转换,可引入finereport.js,使用FR的内置编码函数进行编码转化,示例中,用户名无需编码转换,代码如下:
FR.cjkEncode(document.getElementById("username").value);//使用FR的内置编码函数进行编码转化
2.2完整代码
即完整的实现登录的代码如下:
functionloginFR(){
varusername=document.getElementById("username").value;
varpassword=document.getElementById("password").value;
varf=document.getElementById("loginForm");
jQuery.ajax({
url:"http://localhost:8080/FineBI/ReportServer?op=fs_load&cmd=sso",//单点登录的报表服务器
dataType:"jsonp",//跨域采用jsonp方式
data:{"username":username,"password":password},
jsonp:"callback",
timeout:5000,//超时时间(单位:毫秒)
success:function(data){
if(data.status==="success"){
f.submit();
//登录成功
}elseif(data.status==="fail"){
alert("用户名密码错误!!!");//登录失败(用户名或密码错误)
}
},
error:function(){
alert("超时或服务器其他错误!!!");//登录失败(超时或服务器其他错误)
}
});
}