回到主页
回到主页

报表与用户集成

· 厦门艾科思报表平台系统管理

可以将已经做好的报表集成到第三方系统中,报表是H5的,所以只需要在第三方系统中通过iframe嵌入报表链接即可.

艾科思移动报表平台提供了以下报表集成方式:

【一、用户名密码参数集成】

通过将用户名和密码作为参数放入报表链接中,实现即时登录和权限控制。

 

  1. 在报表设计器中,预览报表,获得报表的访问链接,例如:

    https://enterprise.ireport365.com/view/report.do?reportId=98062e02a4294eda86423f464485089e

  2. 在报表的访问链接中加入用户名及密码参数,例如:

    https://enterprise.ireport365.com/view/report.do?reportId=98062e02a4294eda86423f464485089e&username=demo&password=123456

参数列表如下:

注:password和md5password只需提供其中一个即可

【二、用户名密码安全访问集成】

使用Api生成包含动态加密的用户名、密码的报表url,url过期时间为10分钟,大大提升系统安全性

  1. 创建授权应用,参考:应用授权
  2. 下载Api源码:(API_v1已废弃)
    iReport365Api.java
  3. 替换Api源码中的以下参数:

    Api源码参数

    描述

    host替换成相应的报表服务器地址,包含http,不能以 / 结尾appId授权应用的appIdappSecret授权应用的安全码
  4. 参考Api源码中:

    用户名密码作为密文参数生成报表URL

【三、AccessToken安全访问集成】

向报表服务器获得accessToken(访问码),通过Api生成包含加密认证的报表url,url过期时间为10分钟,大大提升系统安全性

  1. 创建授权应用,参考:应用授权
  2. 下载Api源码:(API_v1已废弃)
    iReport365Api.java
  3. 替换Api源码中的以下参数:

    Api源码参数

    描述

    host替换成相应的报表服务器地址,包含http,不能以 / 结尾appId授权应用的appIdappSecret授权应用的安全码
  4. 参考Api源码中:
    使用AccessToken作为参数生成报表列表的URL
【与第三方用户系统集成】

如果需要与现有的用户系统集成,用户无需管理新的密码,可以启用iReport365报表平台的用户登录脚本,当用户登录时,执行管理员设定的脚本,比如使用SQL或WebService验证用户输入的密码。

  1. 平台管理-》系统设置-》用户登录脚本-》开启
  2. 设置用户登录脚本 (页面底部有脚本示例)

    脚本中支持的内置参数:

result返回值对象属性

databaseService对象方法

broken image

webService对象方法

broken image

userService对象方法

broken image

sessionService对象方法

broken image

ldapService对象方法

broken image

wxcpService对象方法

broken image

将微信企业号用户加入指定的标签

var wxConfigId = "abc"; //配置ID,报表平台->微信企业号->编辑->ID

var wxTagName = "标签名称"; //微信企业号中的标签名称

var usernames = JSONArray();

usernames.add("username1"); //报表平台用户名

usernames.add("username2"); //报表平台用户名

wxcpService.addUserToTag(wxConfigId, wxTagName, usernames);

redisService对象方法

broken image

从Redis集群中取值

var redisKey = "theKey";

var redisAddrs = new ArrayList();

redisAddrs.add("192.168.1.2:7000");

redisAddrs.add("192.168.1.3:7001");

redisAddrs.add("192.168.1.4:7002");

var theValue = redisService.clusterGet(redisAddrs, redisKey);

脚本示例:

数据库验证用户名密码

importPackage(java.util);

importPackage(org.apache.commons.codec.digest);

//获取用户登录时填写的用户名和密码

var username=request.getParameter("username");

var password=request.getParameter("password");

//将密码MD5加密

var md5Password = DigestUtils.md5Hex(password);

//用户库的连接名称

var connectionName = "local dataset";

var param = new ArrayList();

param.add(username);

param.add(md5Password);

//查询用户库

var sql = "select username,password from users where username=? and password=?";

var data = databaseService.query(connectionName, sql, param);

if(data.size() === 0){

result.setSuccess(false);

result.setMessage("用户名或密码错误");

}else{

result.setSuccess(true);

}

LDAP用户认证

importPackage(java.util);

importPackage(org.apache.commons.codec.digest);

//获取用户登录时填写的用户名和密码

var username=request.getParameter("username");

var password=request.getParameter("password");

//LDAP查询

var host = "127.0.0.1";//LDAP主机地址

var port = "389"; //LDAP端口

var type = "simple"; //不用修改

var domain = "abc.com"; //域

var success = ldapService.auth(host,port,type,domain,username,password);

if(success){

result.setSuccess(true);

}else{

result.setSuccess(false);

result.setMessage("用户名或密码错误");

}

WebService用户认证脚本

importPackage(java.util);

importPackage(org.apache.commons.codec.digest);

importPackage(com.alibaba.fastjson);

importPackage(org.apache.commons.lang);

//获取用户登录时填写的用户名和密码

var username=request.getParameter("username");

var password=request.getParameter("password");

var str = webService.get("http://127.0.0.1:8080/login?username="+username+"&password="+password);

if(!StringUtils.isEmpty(str)){

var json = JSONObject.parseObject(str);

var success = json.getBoolean("success");

if(!success){

result.setSuccess(false);

result.setMessage("用户名或密码错误");

}else{

result.setSuccess(true);

}

}else{

result.setSuccess(false);

result.setMessage("用户名或密码错误");

}

全局数据权限脚本

全局数据权限脚本

importPackage(java.util);

importPackage(com.alibaba.fastjson);

importPackage(org.apache.commons.lang);

var dataPermissionData = new HashMap();

//获取报表URL传入的参数

var accessToken=request.getParameter("accessToken");

var appSecret="some code";

var url = "http://www.abc.com/shopguide/api/org/getOrgWithinAuth?appSecret="+appSecret+"&accessToken="+accessToken;

logger.debug("ur: "+url);

//调用接口,获取相关权限

var response = webService.get(url);

logger.debug("response: "+response);

if(!StringUtils.isEmpty(response)){

//拼接权限数据

var json = JSONObject.parseObject(response);

var message = json.getString("msg");

logger.debug("message: "+message);

if(StringUtils.equals(message, "success")){

var values = json.getJSONArray("value");

logger.debug("values: "+values);

if(values != null){

var codeArr = new ArrayList();

for(var m = 0; m < values.size(); m++){

var item = values.getJSONObject(m);

var code = item.getString("code");

codeArr.add(code);

}

//生成SHOPCODE的权限数据

dataPermissionData.put("SHOPCODE", codeArr);

}

}

}

result.setSuccess(true);

result.setData(dataPermissionData);

logger.debug("dataPermissionData: "+dataPermissionData);

上一篇
OAuth SSO单点登录集成
下一篇
更新报表服务器 - Linux系统
 回到主页
strikingly icon上线了提供技术支持
Cookie的使用
我们使用cookie来改善浏览体验、保证安全性和数据收集。一旦点击接受,就表示你接受这些用于广告和分析的cookie。你可以随时更改你的cookie设置。 了解更多
全部接受
设置
全部拒绝
Cookie设置
必要的Cookies
这些cookies支持诸如安全性、网络管理和可访问性等核心功能。这些cookies无法关闭。
分析性Cookies
这些cookies帮助我们更好地了解访问者与我们网站的互动情况,并帮助我们发现错误。
首选项Cookies
这些cookies允许网站记住你的选择,以提供更好的功能和个性化支持。
保存