使用机构为用户分组,可以给机构配置对服务器上某个数据源和管理路径的读写删权限。建立机构的好处是可以为组里的所有用户统一定义访问报表的权限。
报表中心默认会提供一套完整的用户体系,可以定义各种机构和用户,本章主要介绍用户体系的配置和代码使用,方便用户根据自己的需求定制不同的用户体系。
机构在reportCenter.xml中的配置介绍如下:
<?xml version="1.0" encoding="UTF-8"?>
<reportCenter>
<!-- 超级管理员admin密码初始为a000000 -->
<managerPass>82273A6BA2126D3AF24CE2D0CB0AF515</managerPass>
<roles>
<!--下一个新增机构的roleId编号 -->
<newId>2</newId>
<!--机构角色,超级管理员和管理员不可修改。role标签的属性说明:
name:机构名称;
roleId:机构编号,用于区别角色。已占用的编号:0是超级管理员,1是管理员,-1为访客;
nodeList: 角色可见的节点id—用于生成该角色登录时看到的节点树过滤;
dsList: 设计器中可用数据源—远程服务登录能看到的数据源
dirmodeRptList:报表设计器资源路径权限—远程服务登录能看到的资源树和管理权限;
dirmodeSplList:集算器设计器资源路径权限—远程服务登录能看到的资源树和管理权限;
-->
<role name="超级管理员" roleId="0" allAuth="true" nodeList="" />
<role name="管理员" roleId="1" allAuth="true" nodeList="" />
<role name="访客" roleId="-1" dirmodeRptList="demo,1" nodeList="1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76" dsList="demo" dirmodeSplList="demo,1" />
</roles>
… …
</reportCenter>
在java代码中机构集合的获取需要调用com.raqsoft.cetner.Config.getRoles();返回一个Role类实体的数组。
机构主要用于权限验证,自定义时关联权限验证应该检查如下修改:
com.raqsoft.center.console.LoginServlet.java登录身份记录
com.raqsoft.center.console.LoginFilter.java登录验证
com.raqsoft.center.console.node.DeployTreeNode.java展现节点树
com.raqsoft.center.console.file.UploadFilesServlet.java上传
com.raqsoft.center.console.file.Download.java下载
com.raqsoft.center.console.file.FileServlet.java删除
com.raqsoft.center.console.PasswordServlet.java密码修改
com.raqsoft.center.console.ReportCenterServlet.java
-ACTION_TO_ROLE_PAGE跳转角色列表
com.raqsoft.center.console.mobile.MobileLoginFilter.java手机端登录验证
com.raqsoft.center.console.mobile.ShowMobileTree手机端展现节点树
此外,部分jsp使用登录时记录于session的loginType控制页面。如[安装根目录]\report\web\webapps\demo\raqsoft\center\header.jsp中的按钮。
为了方便管理角色,便于增删改查,定义了com.raqsoft.center.RoleManager.java类,客户在自定义时可以调用或参照里面的方法简化增删改查编写过程。