逐步搭建(6):配置用户和用户权限

12002

1. 本课介绍

在这节课中,您将学习如何在数据表中配置用户和用户权限,这是江湖JS框架开发的企业级网页应用项目中的重要功能之一。您将了解需要配置的相关数据表,每个表的结构以及各字段的用法说明。

我们将通过示例演示如何配置这些表,以实现用户认证、权限管理和访问控制功能。

2. 用户权限管理的基本概念

用户权限管理是一个重要的概念,通过有效的身份认证、权限管理和访问控制,系统可以确保用户只能访问其授权的资源,从而提高系统的安全性和数据保护能力。涉及以下几个方面:

(1)身份认证:身份认证是验证用户身份的过程,常见的身份认证方式包括用户名和密码,通过有效的身份认证,系统可以确保只有合法用户才能访问系统资源。

(2)权限管理:把用户分配到组和角色中,用户会被分配到一个或多个用户组,而用户组则会拥有一个或多个角色,角色则对应着一定的权限。。

(3)访问控制:访问控制是指控制用户对系统资源的访问权限。这包括确定用户可以访问的页面、数据或功能,并限制用户对未授权资源的访问。

3. 江湖JS框架中的数据库相关配置表

在在江湖JS项目的权限管理中,通常会涉及到多个表来管理用户、用户组、角色、权限等信息。_user表、_group表、 _role表是基础表,其它三张表是关系表,这些表的作用如下:

_user:用于身份认证,存储用户的基本信息,如用户名、密码等 。*表示所有人。

102-09-jianghujs-basic-user表.png

_group:用于用户组管理,存储用户组的信息,如用户组名称、描述等。*表示所有组。

102-09-jianghujs-basic-group表.png

两个默认的组login、public,不在_group表中显示

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

_role:用于角色管理,存储角色的信息,如角色名称、描述等。*表示所有角色。

102-09-jianghujs-basic-role表.png

_user_group_role:用于权限管理,给用户分配组和角色,存储用户、组、角色之间的关系。

102-09-jianghujs-basic-user-group-role表.png

_user_group_role_page:用于控制访问页面,指定不同用户组或角色在不同页面上的权限设置。

102-09-jianghujs-basic-user-group-role-page表.png
_user_group_role_resource:用于控制访问数据,指定不同用户组或角色在不同页面上能访问的数据接口。

102-09-jianghujs-basic-user-group-role-resource表.png

5. 为用户分配群组与角色

在江湖JS框架开发的企业级网页应用项目中,用户权限的设置是非常必要的,使用_user_group_role表配置用户权限。

例如:张三丰老师在一年级组中担任组长,包含以下信息:

  • 张三丰W00001这个用户信息放在_user
  • 一年级组的信息oneGradeGroup放在_group表,
  • 组长的角色信息groupLeader放在_role表,

为张三丰分配群组oneGradeGroup和角色groupLeader,在_user_group_role这个表是这样写的:

user group role
W00001 oneGradeGroup groupLeader

6. 分配页面与数据接口的权限

把用户分配好了群组和角色,还要为用户设置权限范围内能访问的页面以及可以访问的resource数据接口。例如组长能查询和修改全年级各班级的学生信息,但是老师只能访问和修改自己班级的学生信息。

江湖JS框架页面权限在_user_group_role_page表设置;数据接口访问权限在_user_group_role_resource表设置。

页面权限配置示例

指定用户W00001,W00002访问frontendDemo页面

user group role page allowOrDeny
W00001,W00002 * * frontendDemo allow

用浏览器访问https://127.0.0.1:7001/, 发现只有W00001、W00002能看到frontendDemo页面。

102-09-jianghujs-制定W00001访问页面.png

如果你把下面的示例复制到_user_group_role_page表里面尝试一下,只有符合条件的账号才能看到frontendDemo

指定群组oneGradeGroup访问frontendDemo页面

user group role page allowOrDeny
* oneGradeGroup * frontendDemo allow

指定群组oneGradeGroup指定角色groupLeader访问frontendDemo

user group role page allowOrDeny
* oneGradeGroup groupLeader frontendDemo allow

接口权限配置示例

数据接口resource字段的写法:
pageId.actionId

指定用户 W00001可访问frontendDemo页面的查询接口selectItemList

user group role resource allowOrDeny
W00001 * * frontendDemo.selectItemList allow

用浏览器访问https://127.0.0.1:7001/, W00001无法修改数据,因为没有给他访问updateItem接口的权限。

102-09-jianghujs-制定W00001访问数据接口.png

如果你把下面的示例复制到_user_group_role_resource表里面尝试一下,发现只有符合条件的账号才能访问selectItemList数据接口。

指定群组oneGradeGroup可访问frontendDemo页面的查询接口selectItemList

user group role resource allowOrDeny
* oneGradeGroup * frontendDemo.selectItemList allow

指定群组oneGradeGroup指定角色groupLeader可访问frontendDemo页面的查询接口selectItemList

user group role resource allowOrDeny
* oneGradeGroup groupLeader frontendDemo.selectItemList allow

参考资料:如果你想了解更多这两个表的使用方法,查询江湖JS框架手册配置数据权限。