rbac简介

来自百度百科:基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而 得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以 很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起 来以囊括更广泛的客观情况。

需求

权限管理系统中需要有这么几个角色:管理员、编辑、普通用户,并且管理员拥有所有权限,编辑拥有管理文章的权限,普通用户没有登录后台的权限

数据库设计

根据上面的需求,设计了以下数据库

database

说明:系统中有用户表(user)、角色表(role)、角色权限表(role_privilege)、权限表(privilege)、菜单表(menu_item) 每个用户对应一个角色,每个角色有多个权限,每个权限属于一个菜单项

初始化数据库

根据需求,整个rbac系统的后端分为以下几个模块:

  1. 用户管理:

    用户查询

    用户编辑

    用户删除

    用户添加

  2. 文章管理

    文章查询

    文章编辑

    文章删除

    文章添加

对于管理员用户:拥有用户管理和文章管理的权限

对于编辑用户:拥有文章管理的权限

对于普通用户:无进入后端管理的权限

根据以上需求,对数据库进行初始化

  • 首先,插入菜单的数据库记录

table menu

  • 插入权限数据库记录

table privilege

  • 插入角色记录

table role

  • 插入角色权限数据库记录

role privilege

  • 插入三条用户记录,分别是管理员、编辑和普通用户

table user

数据库的设计到此为止,目前这个权限系统已经托管到了github上了,后续的程序实现思路会另外写一篇博文

github托管地址:rbac-codeigniter Demo地址:rbac demo(管理员帐号:admin,编辑:editor,普通用户:user,所有帐号的密码都是password)