我需要防止普通用户在JasperServer中安排报告,甚至修改ROLE_ADMINISTRATOR以前制定的计划。只能安排ROLE_ADMINISTRATOR。
我遵循了这个指南http://community.jaspersoft.com/wiki/how-customize-navigation-resource-menu-right-click-resource这一个在JasperReports Server中控制调度,以防止使用调度操作,它只能部分工作,用户不能使用上下文菜单(右键单击(创建调度,但他们可以修改、删除以前的调度。怎样通过使用具有先前计划的报告列表中的链接(时钟图标(。
有人知道防止这种情况的解决方案吗?
我根据以下指南找到了一个解决方案:http://community.jaspersoft.com/documentation/jasperreports-server-ultimate-guide/v561/restricting-access-role
我在页面中使用了"按角色限制JSP文件的一个部分":
"…/WEB-INF/jsp/modules/reportScheduling/main.jsp">
要将按钮("创建计划"、"立即运行"one_answers"刷新列表"(限制为ROLE_USERS,需要使用标签authz:authorize封装此代码
<li class="node open">
<ul class="list buttonSet">
<li class="leaf">
<button class="button capsule text first up scheduleJob">
<span class="wrap"><spring:message code="report.scheduling.list.button.new"/></span>
<span class="icon"></span>
</button>
</li>
<li class="leaf">
<button class="button capsule text last up runJob">
<span class="wrap"><spring:message code="report.scheduling.list.button.now"/></span>
<span class="icon"></span>
</button>
</li>
</ul>
</li>
<li class="node open">
<ul class="list buttonSet">
<li class="leaf">
<button class="button capsule text up refreshList">
<span class="wrap"><spring:message code="report.scheduling.list.button.refresh"/></span>
<span class="icon"></span>
</button>
</li>
</ul>
</li>
这样:
<authz:authorize ifAllGranted="ROLE_ADMINISTRATOR">
<li class="node open">
...
</li>
</authz:authorize>
最后,限制作业的调度结果列表:
<!-- body of jobs list -->
<authz:authorize ifAllGranted="ROLE_ADMINISTRATOR">
<div id="resultsContainer" class="body">
<ul id="resultsList" class="list collapsible tabular jobs sixColumn"></ul>
</div>
</authz:authorize>
<!-- end of body of jobs list -->