反饋已提交
網絡繁忙
报表服务器版本
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後關閉