在泛微OA上实现帆软报表的单点登录

一、实现原理

参考文档:http://help.finereport.com/finereport8.0/doc-view-884.html(单点登录的方式),

http://bbs.fanruan.com/forum.php?mod=viewthread&tid=85063(泛微OA单点登录的实例),

http://help.finereport.com/doc-view-1737.html(单点登录时可以使用加密后的密码)

在登录到泛微OA时发送用户名和密码给帆软报表的单点登录的API接口,实现帆软报表的单点登录。

二、实现步骤

1.查看泛微oa的main.jsp文件所在位置

*可以登录泛微oa测试线,打开Chrome开发者工具,查看main.jsp所在位置

图p-1

*main.jsp文件是oa登录之后的主页面,这里文件位置为/usr/weaver/ecology/wui/theme/ecology8/page/main.jsp。

2.通过xftp去服务器获取main.jsp到本地,备份main.jsp(防止修改出错),修改main.jsp

1)在标签之后添加下面的js脚本:

替换相关参数。

图p-2

2)获取泛微OA的用户名和密码:

 插入下列获取泛微OA用户名和密码的java代码:

<%String nodeSql ="select loginid,password from HrmResource where id = " + user.getUID(); 
String userpasswordstr = "aaa";
String loginidstr = "bbb";
RecordSet.executeSql(nodeSql);
if (RecordSet.next()){
userpasswordstr = RecordSet.getString("password"); 
loginidstr = RecordSet.getString("loginid");%>

图p-3

3)替换步骤1中的用户名和密码参数:

var username =FR.cjkEncode("<%=loginidstr%>"); 
var password ="<%=userpasswordstr%>";
password = password.toUpperCase();//把密码小写字母转换成大写字母
console.log("进入帆软单点登录脚本");
console.log("获取到的用户名为:"+username);
console.log("获取到的密码为:"+password);
jQuery.ajax({
url:"http://app.huafeng-cn.com:58080/WebReport/ReportServer?op=fs_load&cmd=sso",//单点登录的报表服务器
dataType:"jsonp",//跨域采用jsonp方式
data:{"fr_username":username,"fr_password":password},

图p-4

3.修改帆软报表平台用户同步方式,使其支持使用加密后的密码:

*登录到帆软报表服务器后台决策系统,对用户同步数据集使用自定义密码加密的方式;

自定义密码类生成方式为构造帆软开发环境,编译java类为class类,并置于对应的class文件夹下,重新部署服务器;

具体路径为:com.fr.privilege.MyPasswordValidator

图p-5

4.重新部署,登录到OA主页面的时候同时也登录到帆软报表平台。


你可能感兴趣的:(帆软报表)