可以将已经做好的报表集成到第三方系统中,报表是H5的,所以只需要在第三方系统中通过iframe嵌入报表链接即可. iReport365提供了以下报表集成方式: |
通过将用户名和密码作为参数放入报表链接中,实现即时登录和权限控制。
在报表设计器中,预览报表,获得报表的访问链接,例如:
https://enterprise.ireport365.com/view/report.do?reportId=98062e02a4294eda86423f464485089e |
在报表的访问链接中加入用户名及密码参数,例如:
https://enterprise.ireport365.com/view/report.do?reportId=98062e02a4294eda86423f464485089e&username=demo&password=123456 |
参数列表如下:
参数名 | 含义 |
---|---|
username | 用户的登录名 |
password | 用户的登录密码,明文 |
md5password | 用户的登录密码,使用md5加密的密文 |
注:password和md5password只需提供其中一个即可
使用Api生成包含动态加密的用户名、密码的报表url,url过期时间为10分钟,大大提升系统安全性
替换Api源码中的以下参数:
Api源码参数 | 描述 |
---|---|
host | 替换成相应的报表服务器地址,包含http,不能以 / 结尾 |
appId | 授权应用的appId |
appSecret | 授权应用的安全码 |
用户名密码作为密文参数生成报表URL
向报表服务器获得accessToken(访问码),通过Api生成包含加密认证的报表url,url过期时间为10分钟,大大提升系统安全性
替换Api源码中的以下参数:
Api源码参数 | 描述 |
---|---|
host | 替换成相应的报表服务器地址,包含http,不能以 / 结尾 |
appId | 授权应用的appId |
appSecret | 授权应用的安全码 |
如果需要与现有的用户系统集成,用户无需管理新的密码,可以启用iReport365报表平台的用户登录脚本,当用户登录时,执行管理员设定的脚本,比如使用SQL或WebService验证用户输入的密码。
设置用户登录脚本 (页面底部有脚本示例)
脚本中支持的内置参数:
参数名 | 描述 |
---|---|
result | 返回值对象 |
databaseService | 数据库操作对象 |
webService | HTTP请求操作对象 |
ldapService | LDAP操作对象 |
request | 用户的请求 |
out | System.out |
databaseService对象方法
方法原型 | 描述 |
---|---|
public List query(String connectionName, String sql) | 通过指定的连接,执行指定的sql,并获得List的返回值 |
public List query(String connectionName, String sql, List param) | 通过指定的连接,执行指定的sql,传入sql中需要的参数,并获得List的返回值 |
webService对象方法
方法原型 | 描述 |
---|---|
public String get(String url) | 请求指定的url,并获得返回值 |
ldapService对象方法
方法原型 | 描述 |
---|---|
public boolean auth(String host, String port, String type, String domain, String username, String password) | LDAP认证 |
脚本示例:
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); } |
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("用户名或密码错误"); } |