编程技术

PHP 之权限管理 — RBAC 模型

cnguu · 10月30日 · 2018年 · ·

前言

权限模型简介
ACL访问控制列表
RBAC基于角色的权限控制
ABAC基于属性的权限控制
PBAC基于策略的权限控制
AUTH基于节点的权限控制

功能模块

用户管理

  1. 用户列表
  2. 添加用户
  3. 编辑用户
  4. 设置角色

角色管理

  1. 角色列表
  2. 添加角色
  3. 编辑角色

权限管理

  1. 设置权限
  2. 权限列表
  3. 添加权限
  4. 编辑权限

数据库设计

user 用户表

名字类型注释更多
idint(11)主键自增
无符号
namevarchar(20)用户名
emailvarchar(30)用户邮箱
is_admintinyint(1)是否管理员:1=>是,0=>否默认:0
statustinyint(1)状态:1=>有效,0=>无效默认:1
create_timetimestamp创建时间
update_timetimestamp更新时间

user_role 用户角色关联表

名字类型注释更多
idint(11)主键自增
无符号
user_idint(11)用户表主键无符号
默认:0
role_idint(11)角色表主键无符号
默认:0
create_timetimestamp创建时间

role 角色表

名字类型注释更多
idint(11)主键自增
无符号
namevarchar(50)角色名
statustinyint(1)状态:1=>有效,0=>无效默认:1
create_timetimestamp创建时间
update_timetimestamp更新时间

role_access 角色权限关联表

名字类型注释更多
idint(11)主键自增
无符号
role_idint(11)角色表主键无符号
默认:0
access_idint(11)权限表主键无符号
默认:0
create_timetimestamp创建时间

access 权限表

名字类型注释更多
idint(11)主键自增
无符号
titlevarchar(50)权限标题
urlsjson对应页面路径
statustinyint(1)状态:1=>有效,0=>无效默认:1
create_timetimestamp创建时间
update_timetimestamp更新时间

access_log 管理员操作记录表

名字类型注释更多
idint(11)主键自增
无符号
user_idint(11)用户表主键默认:0
target_urlvarchar(255)访问的 url
query_paramslongtextGET 和 POST 参数
uavarchar(255)访问的 ua
ipvarchar(32)访问的 ip
notejson备注
create_timetimestamp创建时间默认:current_timestamp

插入超级管理员

insert into `user` (`name`,`email`,`is_admin`,`updated_time`,`created_time`)
values('超级管理员','www@cnguu.cn',1,'2018-10-20 12:12:12', '2018-10-20 12:12:12');

0 条回应