逐步搭建(6):配置用户和用户权限
120021. 本课介绍
在这节课中,您将学习如何在数据表中配置用户和用户权限,这是江湖JS框架开发的企业级网页应用项目中的重要功能之一。您将了解需要配置的相关数据表,每个表的结构以及各字段的用法说明。
我们将通过示例演示如何配置这些表,以实现用户认证、权限管理和访问控制功能。
2. 用户权限管理的基本概念
用户权限管理是一个重要的概念,通过有效的身份认证、权限管理和访问控制,系统可以确保用户只能访问其授权的资源,从而提高系统的安全性和数据保护能力。涉及以下几个方面:
(1)身份认证:身份认证是验证用户身份的过程,常见的身份认证方式包括用户名和密码,通过有效的身份认证,系统可以确保只有合法用户才能访问系统资源。
(2)权限管理:把用户分配到组和角色中,用户会被分配到一个或多个用户组,而用户组则会拥有一个或多个角色,角色则对应着一定的权限。。
(3)访问控制:访问控制是指控制用户对系统资源的访问权限。这包括确定用户可以访问的页面、数据或功能,并限制用户对未授权资源的访问。
3. 江湖JS框架中的数据库相关配置表
在在江湖JS项目的权限管理中,通常会涉及到多个表来管理用户、用户组、角色、权限等信息。_user
表、_group
表、 _role
表是基础表,其它三张表是关系表,这些表的作用如下:
_user
表:用于身份认证,存储用户的基本信息,如用户名、密码等 。*
表示所有人。
_group
表:用于用户组管理,存储用户组的信息,如用户组名称、描述等。*
表示所有组。
两个默认的组
login、public
,不在_group
表中显示
- 登录后用户在
login
组内- 所有的用户都在
public
组内
_role
表:用于角色管理,存储角色的信息,如角色名称、描述等。*
表示所有角色。
_user_group_role
表:用于权限管理,给用户分配组和角色,存储用户、组、角色之间的关系。
_user_group_role_page
表:用于控制访问页面,指定不同用户组或角色在不同页面上的权限设置。
_user_group_role_resource
表:用于控制访问数据,指定不同用户组或角色在不同页面上能访问的数据接口。
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
页面。
如果你把下面的示例复制到_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
接口的权限。
如果你把下面的示例复制到_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框架手册配置数据权限。