81. 多角色用户权限
简介
在本章里,我们将完成后台模块内容管理开发,并按产品设计给运营人员分配管理权限。在本节里,我们首先给大家介绍一下项目后台多角色用户权限功能,并完成运营人员账号创建。
多角色分配
在后台模块,我们将使用 用户-角色-权限 这种模式来管理登录用户访问权限。目前项目后台只需要 运营人员 和 管理员 这两种角色,关于这两个角色的权限请看 产品分解 说明。
Auth权限认证方式
在 ThinkPHP 项目里我们常用的权限认证有两种—— RBAC
和 Auth
。由于 Auth 认证方式比 RBAC 认证逻辑简单而且功能更强大,而且在 ThinkPHP 3.2 版本里框架默认包含 Auth 认证功能 、所以我们在开发过程中使用 Auth 认证比较多,在本项目里我们也是用 Auth 认证方式来管理后台用户权限。
由于篇幅关系,我们在这里不过多介绍和比较 RBAC 和 Auth 权限认证的优劣,在这里我们提供一些详细介绍两者的资料链接,虽然这些文章是介绍 RBAC 和 Auth 权限认证在 ThinkPHP 3.2~5.0 版本项目里应用,但同样适用于 5.1 版本。
www.cnblogs.com/jianxian/p/8719741...
blog.csdn.net/AnPHPer/article/deta...
blog.csdn.net/gzxiaomei/article/de...
blog.csdn.net/ljw499356212/article...
数据字典
adminer 后台管理员用户 |
字段名称 | 描述 | 字段类型 | 加索引缘由 | 其他 |
---|---|---|---|---|---|
name | 登录名 | 字符串(Strng) | 查询 | limit => 50, null => false | |
password | 登录密码 | 字符串(Strng) | 查询 | null => false | |
status | 是否启用 | 布尔(Boolean) | 不需要 | default => 1, null => false | |
login_ip | 登录IP | 字符串(Strng) | 不需要 | limit => 50, null => true | |
login_time | 登录时间 | 整数(integer) | 不需要 | default => 0, null => true | |
is_default | 是否默认用户 | 布尔(Boolean) | 不需要 | default => 0, null => true |
- Auth 组件是不包含用户表,在本项目里后台用户和前台用户分成两个表来存储,
adminer
表存储的就是项目后台管理员用户信息。
auth_rule 规则表 |
字段名称 | 描述 | 字段类型 | 加索引缘由 | 其他 |
---|---|---|---|---|---|
name | 规则名 | 字符串(Strng) | 查询 | limit => 80, null => false | |
title | 规则标题 | 字符串(Strng) | 不需要 | limit => 30, null => false | |
type | 规则类型 | 布尔(Boolean) | 不需要 | default => 1, null => false | |
parent_id | Parent规则ID | 整数(integer) | 不需要 | default => 0, null => false | |
sort_num | 排序编号 | 整数(integer) | 不需要 | default => 0, null => false | |
route_name | 路由名称 | 字符串(Strng) | 不需要 | limit => 100, null => false | |
icon | 菜单项小标 | 字符串(Strng) | 不需要 | limit => 50, null => false | |
status | 是否启用 | 布尔(Boolean) | 不需要 | default => 1, null => false | |
condition | 规则条件 | 字符串(Strng) | 不需要 | limit => 100, null => false | |
tips | 说明 | 文本(Text) | 不需要 | null => true |
sort_num
和route_name
字段是我们添加的字段;sort_num
字段用于调整规则项的显示排序;route_name
字段用于采用 路由命名 方式生成菜单项链接;
auth_role 用户组表 |
字段名称 | 描述 | 字段类型 | 加索引缘由 | 其他 |
---|---|---|---|---|---|
title | 用户组名 | 字符串(Strng) | 不需要 | limit => 20, null => false | |
status | 是否启用 | 布尔(Boolean) | 不需要 | default => 1, null => false |
auth_role_rule 用户组与规则关联中间表 |
字段名称 | 描述 | 字段类型 | 加索引缘由 | 其他 |
---|---|---|---|---|---|
rule_id | 规则ID | 整数(integer) | 不需要 | default => 0, null => false, unsign => true | |
role_id | 规则ID | 整数(integer) | 不需要 | default => 0, null => false, unsign => true |
auth_role_user 用户组与后台管理员用户中间表 |
字段名称 | 描述 | 字段类型 | 加索引缘由 | 其他 |
---|---|---|---|---|---|
user_id | 管理用户ID | 整数(integer) | 不需要 | default => 0, null => false, unsign => true | |
role_id | 规则ID | 整数(integer) | 不需要 | default => 0, null => false, unsign => true |
添加运营管理员
虽然 Auth 认证支持为一个管理用户( adminer )分配多个组权限( auth_role ),但在我们这个项目里我们只允许一个管理用户只能分配一个角色组。
我们在第 2 章 搭建项目 时已经完成了以上 Auth 认证权限管理表的创建,并创建了以下角色组和管理员用户:
- 『运营』角色组分配路由权限为空;
- 『站长』用户( admin : 123456 )拥有后台所有页面访问权限,该账号不可以删除;
- 『运营管理员』 用户( manager : 123456 ),角色组是『运营』。
效果预览
由于运营人员主要负责网站内容管理,目前我们在后台现在还没有开发内容管理功能,所以我们暂时没有给『运营』角色组分配可访问权限。所以我们用账号 manager
登录后台看到左侧菜单栏是空的。
推荐文章: