反饋已提交
網絡繁忙
报表服务器版本
JAR 包版本
报表中设置了网络报表类型的超级链接,如果用户没有超级链接指向的子报表的权限,那么用户在点击了超级链接后是否可以查看子报表呢?超级链接的子报表是否可以继承主报表的权限呢?
下面将梳理超级链接继承权限的逻辑。让用户可以清晰了解 FineReport 超级链接继承权限避免权限泄露的方法。
注1:由于 URL 中超链跳转会带上 hyperlinktoken,因而在半小时有效期内,拥有该 token 就能查看其他所有模板的数据,这会导致越权访问。故2019-12-05及之后版本的 JAR 包加上了用户登录限制。
注2:FineReport 无分享功能,所谓的分享就是拷贝当前报表的 URL 给其他人。
用户可以在两种场景下打开 FineReport 报表:在决策平台打开和不在决策平台平台打开。
这两种场景下配置报表权限的方式是相同的,都是通过模板认证配置模板权限,模板认证的详细内容参见:模板认证
注:只有超链方式为模板路径时,超链权限才能继承。以下两种方式不支持权限继承:
1)参数直接写在模板路径后面
2)网页链接中填写模板预览 URL
如果用户直接使用 FineReport 决策平台打开报表,该场景下只有三种类型的模板访问方式校验模板权限:模板类型首页、通过链接挂载模板的首页、通过链接挂载模板的目录。
平台目录直接挂载模板不校验模板权限,只需要在权限管理>权限配置给对应用户配置目录权限,用户即可正常查看模板内容。
如果用户没有超链打开的子报表的权限,这个时候想要查看该子报表,就需要让子报表继承主报表的权限,因为如果再去设置一遍子报表的模板认证权限会比较繁琐。
为了便于理解,给出详细的用户操作场景示例说明(此处只介绍角色认证场景)
用户A登录平台>打开报表1>超链到报表2
报表2需要认证
用户A无报表2的权限
新窗口/平台内新标签/对话框/当前页/平台内当前标签页打开:都能直接查看报表2
用户A登录平台>打开报表1>超链到报表2>拷贝报表2的 URL 到新的浏览器
用户A无权限
用户B有权限
用户C无权限
提示登录,用户A登录后:
token 未超时前可查看报表2
token 超时后不可查看,需要重新用报表1的超链打开
提示登录,用户B登录后:
可以查看报表2,且模板数据会按用户B的权限进行过滤
提示登录,用户C登录后:
提示没有权限
用户A登录平台>打开报表1>超链到报表2>拷贝报表2的 URL 到同一浏览器的新标签页
如果用户将报表集成到自己的系统中打开,该场景下用户也需要通过模板认证配置模板权限。
这个时候超链打开的子报表,也需要继承主报表权限。这个也很常见,因为在报表很多的情况下,管理员通常只会设置主报表的权限,超链的子报表可能会很多,这个时候如果逐个设置权限会很麻烦。
同样为了便于理解,给出详细的用户操作场景示例说明:
1)角色权限认证
报表1和报表2都需要认证
用户A有报表1的权限,无报表2的权限
token 未超时前用户A可直接查看报表2
token 超时后提示登录,用户A登录不可查看报表2,需要重新用报表1的超链打开,且报表1也需要重新登录
用户B有报表2的权限
token 超时后提示登录,用户A登录后不可查看报表2,需要重新用报表1的超链打开
可正常查看报表2中的有权限数据
token 未超时前用户A无需登录可查看报表2
token 超时后提示登录,用户A登录后不可查看报表2,需要重新用报表1的超链打开
2)仅认证用户密码
token 未超时前用户A可查看报表2
token 超时后用户A刷新报表2,提示登录,任意用户登录可正常查看报表2内容
超时需要重新登录,登录后正常查看
token 未超时前可查看报表2中有权限的数据
token 超时后用户A需重新登录可正常
3)数字签名
token 超时后报表2不可查看,需要重新用报表1的超链打开,但要确保报表1的数字签名未超时,否则无效
4)不开启认证
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙