JianghuJS-页面权限配置&接口权限配置

学习目标

  • 学习页面权限、resource权限规则
  • 根据示例尝试设置页面及数据权限

1. 页面权限说明

页面权限是指限制某些用户或用户组对页面的访问权限。在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''

页面权限逻辑

1.每一次page请求到达后端,后端首先根据cookie获取用户信息
2.从用户信息中获取 userId & userGroupRoleList
3.根据user_group_role_page表和page表的配置计算出用户能访问的页面列表allowPageList
4.判断当前page请求是否在allowPageList

两个隐式group(login&public)

  • 登录后用户在login group
  • 所有的用户都在public group

2. 页面权限配置示例

所有人访问

  • 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

3. 接口(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''

接口权限逻辑

1.每一次接口请求到达后端,后端首先根据authoken获取用户信息
2.从用户信息中获取 userId & userGroupRoleList
3.根据user_group_role_page表和resource表的配置计算出用户所能访问的接口列表allowResourceList
4.判断当前page请求是否在 allowResourceList

两个隐式group(login&public)

  • 登录后用户在login group
  • 所有的用户都在public group

4. 接口权限配置示例

所有人可访问

  • 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

小结

本文介绍了JianghuJS中页面权限配置和接口权限配置的方法。页面权限可以限制某些用户或用户组对页面的访问权限,接口权限可以限制某些用户或用户组对接口的访问权限。页面权限和接口权限的配置是通过配置 _user_group_role_page 和 _user_group_role_resource 数据来实现。在配置时,可以指定用户、用户组、角色以及页面或接口,并设置允许或拒绝访问。本文还提供了配置示例。

课后练习

  • test页面配置为W00001用户不能访问
  • frontendDemo01.selectItemListresource 配置为只允许adminGroup用户组访问