• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

Thinkphp3.2.3中的RBAC权限验证_多点折腾少点抱怨

Data: 2019-01-19 02:56:16Form: JournalClick: 10

Thinkphp3.2.3中的RBAC权限验证
 
最近在用TP的RBAC权限控制,在这里记录学习一下。先来看看相关的概念
 
一、相关概念
 
访问控制与RBAC模型
1、访问控制:
          通常的多用户系统都会涉及到访问控制,所谓访问控制,是指通过某种方式允许活限制用户访问能力及范围的一种方法。这主要是由于系统需要对关键资源进行保护,防止由于非法入侵或者误操作对业务系统造成破坏。简而言之,访问控制即哪些用户可以访问哪些资源。
        一般而言,访问控制系统包括三个组成部分:
          主体:发出访问请求的实体,通常指用户或者用户进程。
          客体:被保护的资源,通常是程序,数据,文件或者设备。
          访问策略:主体和客体的映射规则,确定一个主体是否对客体具有访问能力。
2、RBAC (Role-Base-Access-Controll)
          基于角色的访问控制(RBAC)的概念在七十年代就已经提出,但是直到九十年代由于安全需求的发展才又引起了广泛关注。RBAC 的核心思想是将系统资源的访问权限进行分类或者建立层次关系,抽象为角色的概念,然后根据安全策略将用户和角色关联,从而实现了用户和权限之间的对照。RBAC 通过引入角色并将其作为权限管理的中介,将访问控制系统分为两个部分,即权限与角色的关联和角色与用户的关联,具有灵活易控制的优点。
来源:http://www.ibm.com/developerworks/cn/java/j-lo-rbacwebsecurity/
 
我的理解就是给用户赋予不同的角色,给角色服务不同的权限,权限可以看成要访问资源的集合,角色只是用户和权限的过渡层,可能会问为什要有一个角色过渡层,可以试想一下没有role过渡层,有多个用户有着相同的数个权限,分配管理权限的时候,要重复分配权限,工作量很大,更何况修改权限的时候,更麻烦,可以说不利于代码的 维护,所以要有一个role的过渡层。下面来看看TP(thinkphp)中的RBAC的实现及用法。
 
二、TP中的RBAC类及使用RBAC类
1、RBAC权限验证的大致流程:
         ① 、验证当前操作是否需要验证
         ② 、验证是否登录
         ③ 、查看当前用户的身份
         ④ 、获取当前用户的权限列表
         ⑤ 、进行权限验证
 
2、 RBAC所依赖的5张数据表

 
  1.  
    CREATE TABLE IF NOT EXISTS `think_access` (
  2.  
    `role_id` smallint(6) unsigned NOT NULL,
  3.  
    `node_id` smallint(6) unsigned NOT NULL,
  4.  
    `level` tinyint(1) NOT NULL,
  5.  
    `module` varchar(50) DEFAULT NULL,
  6.  
    KEY `groupId` (`role_id`),
  7.  
    KEY `nodeId` (`node_id`)
  8.  
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  9.  
     
  10.  
    CREATE TABLE IF NOT EXISTS `think_node` (
  11.  
    `id` smallint(6) unsigned NOT
Name:
<提交>