用户类型、角色和权限 |
SuperMap iPortal 可以使用、创建、共享和管理各种地理信息资源,包括:地图、服务、场景、数据、项目、洞察、大屏等。 iPortal 用户访问和使用 iPortal 门户中资源的能力取决于其用户类型与在门户中拥有的权限,权限通过角色分配给 iPortal 用户,基于角色实现对门户资源的访问控制。
添加新用户时,管理员会为其分配用户类型,用户类型决定了可通过角色分配给用户的权限范围。SuperMap iPortal 的用户类型包括创建者和查看者两类,两者间的区别如下:
iPortal 管理员可以在用户管理页面中,更改 iPortal 用户的用户类型。
角色可定义分配给用户的权限集,SuperMap iPortal 的角色包括内置角色和自定义角色。
对于新注册的用户,iPortal 的管理员可以进行以下角色设置:
SuperMap iPortal 默认提供了以下内置角色,其中 ADMIN, PORTAL_USER, PORTAL_VIEWER 三者是互斥的。一个用户理论上不能同时存在其中的两种或三种角色,如果同时存在将忽略优先级低的角色,优先级顺序 ADMIN>PORTAL_USER>PORTAL_VIEWER。
SuperMap iPortal 支持添加自定义角色,可以对其指定某些、某一类或某几类权限的集合。例如:可以为自定义角色授予门户站点配置权限,那么关联该角色的用户将具有门户站点配置能力,包括:站点定制、应用配置、数据上图配置、数据洞察配置、目录管理等。还有,您也可以自定义部门管理员角色,并为其分配资源管理和用户管理的权限,那么关联该角色的部门管理员可以管理本部门的资源和用户。更多关于自定义角色的权限分配请参见:角色管理。
在一些实际的业务应用中,往往有这样一种用户,仅需浏览和使用 iPortal 门户中的资源,而不想分配给他们创建和共享资源的权限,这种用户通常还占很大的比例,如果为他们关联 PORTAL_USER 角色,不仅为其分配的权限过大,而且还占用了大量的用户数许可,得不偿失。基于此,SuperMap iPortal 提供了 PORTAL_VIEWER 角色。
PORTAL_VIEWER 角色是 SuperMap iPortal 9D 新增的查看者角色,面向仅需浏览使用 iPortal 门户中与其共享的资源的用户群。用户类型为查看者的用户,只能关联 PORTAL_VIEWER 角色或比 PORTAL_VIEWER 权限更低的自定义角色,且不占用 iPortal 用户数许可。
仅关联 PORTAL_VIEWER 角色的用户只具有查看与其共享的资源的权限,关联 PORTAL_USER 角色的用户拥有更多能力,除了拥有 PORTAL_VIEWER 角色的权限外,还拥有创建和共享门户资源的权限,有关两者权限的更详细介绍请参见:角色管理。
权限通过角色分配给 iPortal 用户,有关 SuperMap iPortal 的权限可以分为内置权限和自定义权限,授予内置角色的权限无法更改,自定义角色权限可更改。
SuperMap iPortal中的内置权限按照模块、资源、操作的不同划分到了非常小的颗粒度。权限划分请参考:角色管理。方便用户根据业务需要,为自定义角色分配充分且必要的权限集合。
用户扩展的开发成果如何进行权限控制呢?例如:前端扩展页面要根据自定义权限来控制UI的显隐,后端自定义RestAPI 要根据自定义权限控制 RestAPI 是否有权访问。在这种情况下,用户可扩展细粒度权限控制项来实现。
编辑 %SuperMap iPortal_HOME%\webapps\iportal\resources\admin-ui\extend 目录中的 permissions.json 文件,将自定义权限表达式以 json 格式写入。该文件可以在角色管理的权限列表中增加针对访问扩展页面的权限设置项,支持中文、英文两种语言,示例如下:
{
"permissions":[
{
"permission": "portal:custom:admin:extendsPage:viewPage1",
"label": {
"zh": "查看iframe扩展示例页面",
"en": "View iframe extends page"
}
}
]
}
自定义常规权限格式:portal:custom:user:xxx
自定义管理权限格式:portal:custom:admin:xxx
保存后,以管理员身份登录 iPortal,即可在管理页面的菜单项中看到扩展的内容。
有关前端如何使用自定义权限表达式请参考:案例1—以 iFrame 形式扩展新的管理页面,后端自定义RestAPI 判断当前用户有没有某个(自定义)权限,可以通过下面一句代码进行判断。
boolean
isPermitted
= ThreadContext.getSubject().isPermitted(
"portal:custom:admin:extendsPage:viewPage1"
);