JianghuJS-页面&接口权限配置
120021、页面权限说明
概念
页面权限是指限制某些用户或用户组对页面的访问权限。在JianghuJS中,可以通过配置_user_group_role_page数据来实现页面权限的控制。
页面权限表
- 在
page表中定义页面
| 字段 | 描述 |
|---|---|
| pageId | '页面ID' |
| pageName | '页面名' |
| pageType | '页面类型' showInMenu: 展示在菜单上, dynamicInMenu: 只有访问页面时才展示在菜单上, seo: 文章类的seo页面 |
| sort | '排序' |
| pageHook | '页面渲染Hook, 主要用于页面render之前的数据挂载' { "beforeHook":[{"field": "doc", "service": "xxx", "serviceFunc": "xxx"}] } |
- 在
user_group_role_page表中定义用户有哪些页面的权限
| 字段 | 描述 |
|---|---|
| user | 'userId 或者 通配符; 通配符: * ' |
| group | 'groupId 或者 通配符; 通配符: * ' |
| role | 'roleId 或者 通配符; 通配符: * ' |
| page | '页面ID' |
| allowOrDeny | '权限策略, allow: 允许、deny: 拒绝; deny的执行逻辑高于allow'' |
页面权限逻辑
- 每一次
page请求到达后端,后端首先根据cookie获取用户信息 - 从用户信息中获取
userId&userGroupRoleList - 根据
user_group_role_page表和page表的配置计算出用户能访问的页面列表allowPageList - 判断当前
page请求是否在allowPageList内
两个隐式group(login&public)
- 登录后用户在
logingroup内- 所有的用户都在
publicgroup内
页面权限配置示例
- 所有人访问
在user_group_role_page表中配置login页面:
| user | group | role | page | allowOrDeny |
|---|---|---|---|---|
| * | public | * | login | allow |
- 登录后访问
在user_group_role_page表中配置manual页面:
| user | group | role | page | allowOrDeny |
|---|---|---|---|---|
| * | login | * | manual | allow |
- 指定用户访问
在user_group_role_page表中配置test页面:
| user | group | role | page | allowOrDeny |
|---|---|---|---|---|
| W00001,W00002,W00002 | * | * | test | allow |
- 指定群组访问
在user_group_role_page表中配置test页面:
| user | group | role | page | allowOrDeny |
|---|---|---|---|---|
| * | adminGroup | * | test | allow |
- 指定群组的指定角色访问
在user_group_role_page表中配置test页面:
| user | group | role | page | allowOrDeny |
|---|---|---|---|---|
| * | adminGroup | appAdmin | test | allow |
2、接口(Resource)权限说明
概念
接口权限是指限制某些用户或用户组对Resource的访问权限。在JianghuJS中,可以通过配置_user_group_role_resource数据来实现Resource权限的控制。
接口权限表
- 在
resource表中定义接口
| 字段 | 描述 |
|---|---|
| pageId | 'pageId' |
| actionId | 'actionId' |
| .... |
resourceId(接口Id) =pageId.actionId
- 在
user_group_role_resource表中定义用户有哪些接口的权限
| 字段 | 描述 |
|---|---|
| user | 'userId 或者 通配符; 通配符: * ' |
| group | 'groupId 或者 通配符; 通配符: * ' |
| role | 'roleId 或者 通配符; 通配符: * ' |
| resource | 'resourceId' |
| allowOrDeny | '权限策略, allow: 允许、deny: 拒绝; deny的执行逻辑高于allow'' |
接口权限逻辑
- 每一次接口请求到达后端,后端首先根据
authoken获取用户信息 - 从用户信息中获取
userId&userGroupRoleList - 根据
user_group_role_page表和resource表的配置计算出用户所能访问的接口列表allowResourceList - 判断当前
page请求是否在allowResourceList内
两个隐式group(login&public)
- 登录后用户在
logingroup内- 所有的用户都在
publicgroup内
接口权限配置示例
- 所有人可访问
在user_group_role_resource表中配置login.passwordLogin:
| user | group | role | resource | allowOrDeny |
|---|---|---|---|---|
| * | public | * | login.passwordLogin | allow |
- 登录后可访问
在user_group_role_resource表中配置frontendDemo01.selectItemList:
| user | group | role | resource | allowOrDeny |
|---|---|---|---|---|
| * | login | * | frontendDemo01.selectItemList | allow |
- 指定用户可访问
在user_group_role_resource表中配置frontendDemo01.selectItemList:
| user | group | role | resource | allowOrDeny |
|---|---|---|---|---|
| W00001,W00002,W00002 | * | * | frontendDemo01.selectItemList | allow |
- 指定群组可访问
在user_group_role_resource表中配置frontendDemo01.selectItemList:
| user | group | role | resource | allowOrDeny |
|---|---|---|---|---|
| * | adminGroup | * | frontendDemo01.selectItemList | allow |
- 指定群组的指定角色可访问
在user_group_role_resource表中配置frontendDemo01.selectItemList:
| user | group | role | resource | allowOrDeny |
|---|---|---|---|---|
| * | adminGroup | appAdmin | frontendDemo01.selectItemList | allow |
3、总结
本文介绍了JianghuJS中页面权限配置和接口权限配置的方法。页面权限可以限制某些用户或用户组对页面的访问权限,接口权限可以限制某些用户或用户组对接口的访问权限。页面权限和接口权限的配置是通过配置 _user_group_role_page 和 _user_group_role_resource 数据来实现。在配置时,可以指定用户、用户组、角色以及页面或接口,并设置允许或拒绝访问。本文还提供了配置示例。
4、课后练习
页面权限 & 接口权限的配置练习:
- 将
test页面配置为W00001用户不能访问 - 将
frontendDemo01.selectItemListresource 配置为只允许adminGroup用户组访问