我最近在JasperServer上一直在使用JasperReports.在阅读他们的文档后,他们说可以通过直接URL访问有关JasperServer存储库的任何报告.通过URL(GET)中的几个名称值对(例如reportName,输出,用户名和密码),可以检索特定报告.
我的问题是,如何让人们通过直接URL访问报告而无需人们在地址栏中看到所有信息(尤其是用户名和密码)?这似乎非常不安全.
JasperSoft有一些聪明的人,所以我必须遗漏一些东西.
如何在不显示其他人擦除和填写的所有参数的情况下仍然使用直接URL?有些人可能会回答说只是将表单提交更改为POST,但我甚至不知道从哪里开始在JasperServer上更改该代码.
PS我将至少使用SSL处理网络安全.
任何解释都会非常有帮助.
我写了一些Java类,创建了jar文件.我想将它添加到JasperReports Server.当我确定我的jar文件的路径时,使用我的iReport中的工具 - >首选项 - >类路径菜单,它可以正常工作.但是,当我从另一台主机访问JR Server时,它不起作用.
我必须做什么,从这个JR服务器上随处可用这个jar文件?
我有Jasper Reports Server(安装在www.example.com上)和一个单独的Java/JSP应用程序(安装在www.example.net上),我正在寻找不同的选项来生成报告.
选项1(当前工作解决方案)
我目前的工作解决方案是用户登录Java/JSP应用程序,并选择一个报告.应用程序创建报告的XML表示形式,fileNameXML
然后将其保存为,然后使用以下代码将其发送到Jasper Reports Server:
<IFRAME height="600" width="1000" src="https://www.example.com/jasperserver/flow.html?
_flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow&
ParentFolderUri=%2Freports&
reportUnit=%2Freports%2FExample_Report_2&j_username=user&
j_password=password&
net.sf.jasperreports.xml.source=https://www.example.net/<%=fileNameXML%>">
</IFRAME>
Run Code Online (Sandbox Code Playgroud)
(请注意,即使我在URL中传递用户名和密码,安全性也不会受到影响,因为使用了filenameXML String fileName = UUID.randomUUID().toString() + fileExt;
)
选项2
我将Jasper Reports服务器直接连接到www.example.net上的SQL Server数据库,并以此方式生成报告.这种方法的缺点是(a)我需要在Jasper Reports中设置所有用户(b)我需要以安全意识的方式传递参数,以便每个用户只能访问他们自己的数据(c)我只能访问数据库,而不能访问我的应用程序
我的理想解决方案
但是,我真的希望能够通过Jasper访问我的应用程序的计算,并绕过登录到我的应用程序.
这样做的一个优点是我的应用程序还没有适当的移动访问权限,用户可以下载Jasper Mobile Application应用程序并从那里访问报告.
这将涉及以下内容:
实现这一目标的最佳方法是什么?
我需要将报告导出到普通的html文件而不使用jasper报告的视口.
如果我&output=pdf
在url中我得到一个pdf文件,&output=xls
一个xls文件,但&output=html
会在jasper报告的视口中显示html.我也想要一个html文件.
我怎样才能实现这一目标?我正在使用http api.
从文档
以下示例执行与上一节中显示的相同的报表,但也将4012作为输入控件参数传递并导出为PDF而不是HTML:
http://<host>:<port>/<context>/flow.html?_flowId=viewReportFlow&reportUnit=
/supermart/Details/CustomerDashboard&customerID=4012&output=pdf
Run Code Online (Sandbox Code Playgroud)
相关问题,但对我没有帮助.
在Jaspersoft Studio中,我创建了一个报告,我希望以粗体显示标题.如果我使用sans serif字体,那么它正常工作.如果我使用其他字体,则在Jaspersoft Studio的预览中会显示粗体,但在Jasper服务器中运行报告时不显示.请帮忙.
我正在尝试通过来自C#.net的web服务将新的报告单元上传到jasperserver我已经成功上传/创建了报告单元但是当我通过iReport资源库导航器点击报告时它显示"No Attachment Present!" 在一个弹出框中.下面是我发送给webservice的'createXML':
<request operationName='put' locale='en'>
<resourceDescriptor name='barunit' wsType='reportUnit'
uriString='/reports/bar/bar_files'
isNew='true'>
<label>Bar Unit</label>
<description>This is a test</description>
<resourceProperty name='PROP_PARENT_FOLDER'>
<value>/reports/bar</value>
</resourceProperty>
<resourceDescriptor name='bar.jrxml' wsType='jrxml'
uriString='/reports/bar/bar_files'
isNew='true'>
<label>Bar Report</label>
<description>This is a test</description>
<resourceProperty name='PROP_RU_IS_MAIN_REPORT'>
<value>true</value>
</resourceProperty>
</resourceDescriptor>
</resourceDescriptor>
</request>
Run Code Online (Sandbox Code Playgroud)
以下是将"createXML"发送到Web服务的代码:
JasperService.ManagementServiceService service = new JasperService.ManagementServiceService();
service.Credentials = new System.Net.NetworkCredential("jasperadmin", "jasperadmin");
service.PreAuthenticate = true;
FileStream fs = new FileStream(@"C:\bar.jrxml", FileMode.Open, FileAccess.Read);
Microsoft.Web.Services2.Attachments.Attachment jrxmlAttachment = new Microsoft.Web.Services2.Attachments.Attachment("text/xml",fs);
service.RequestSoapContext.Attachments.Add(jrxmlAttachment);
string out = service.put(createXML);
Run Code Online (Sandbox Code Playgroud)
来自webservice调用的响应给出了成功代码'0',所以我有点难过.我猜测问题在于RequestSoapContext的文件附件,因为在此之前一切都很好.
任何帮助将不胜感激!
我正在尝试在linux上构建jasperserver.它使用蚂蚁和maven.执行ant命令时会出现此异常.我检查了相同的路径但是lib文件夹不在同一条路径上.我该如何解决这个问题?
谢谢!!
我正在使用JasperReports Server v4.5.
我们在使用REST API安排报告时遇到了困难.
我们能够安排只接受字符串参数的报告,但问题始于具有java.util.Collection类型参数的报告.我们尝试了一切,但找不到java.util.Collection的正确类型.
现在这个工作:
<parameters>
<name>string_input</name>
<value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
test
</value>
</parameters>
Run Code Online (Sandbox Code Playgroud)
但我们无法做到这一点:
<parameters>
<name>array_parameter</name>
<value type=? >[1, 2, 3]</value>
</parameters>
Run Code Online (Sandbox Code Playgroud)
当我查看代码时,我可以看到JasperReports Server WS接受数组,但是没有记录的方式来发送数组或数组类型.
解决这个问题的正确方法是什么?
我使用捆绑的Tomcat在Ubuntu 14.04 LTS和Nginx代理上安装了新的JasperReports Server 6.2,这样我就可以访问https://mydomain.xyz/jasperserver.它主要起作用,但我无法管理用户和角色.如果我绕过Nginx并直接进入Tomcat http://123.123.123.123:8080/jasperserver,一切都很完美.日志表明:
2016-02-28 19:44:08,024 ERROR CsrfGuard,http-nio-8080-exec-3:44 - 潜在的跨站点请求伪造(CSRF)攻击被挫败(用户:,ip:127.0.0.1,uri:/ jasperserver /flow.html,错误:请求中缺少必需的令牌)
这与旧的问题完全相同:在nginx后面运行jasperserver:潜在的CSRF攻击.但是我已经尝试过这两种缓解措施,但它仍然无效.
underscores_in_headers on;
,首先是in http
,然后是in server
,然后是两者.JASPER_CSRF_TOKEN
和OWASP_CSRFTOKEN
中WEB-INF/esapi/Owasp.CsrfGuard.properties
我重新启动服务器只是为了确保所有内容都已清除并重新启动,但仍然无法正常工作.
我正在寻求解决方案的建议和/或指导哪些方面可以更好地诊断问题.我是Jasper的新手,我的Java/Tomcat技能很生疏.
当我查看将参数传递给Jasper Report REST 2 API的文档时:http://community.jaspersoft.com/documentation/jasperreports-server-web-services-guide/v550/running-report-asynchronously我看到了我需要一个"参数"字典.链接中的示例显示了XML并不是那么有用,因为它不清楚具体的JSON应该是什么样子.我能找到的最接近的链接是:http://community.jaspersoft.com/documentation/jasperreports-server-web-services-guide/v56/modifying-report-parameters.现在,我将相应的内容发送到服务器(以及我能想到的所有其他排列),然后我继续得到"400 Client Error:Bad Request".我真的可以使用python代码的确切示例来生成所需的"参数"参数,例如"my_parameter_1 ="test_value_1".
这是我目前的POST数据(为简洁起见,缺少一些参数).我知道这是正确的,因为如果我省略"参数"参数,报告工作正常:
{
'outputFormat': 'pdf',
'parameters': [{'name': 'ReportID', 'value': ['my_value_1']}],
'async': 'true',
'pages': '',
'interactive': 'false'
}
Run Code Online (Sandbox Code Playgroud)