zoukankan      html  css  js  c++  java
  • ThinkPhp RBAC实现原理

    RBAC是英文Role-Based Access Control的缩写,是基于角色访问进行控制的机制。意思是给每个用户设定一个角色,然后根据这个角色来判断用户的权限。

    在此基于ThinkPhp的MVC模式进行简单的小结(ThinkPhp的访问由模块和操作两部分进行控制)。

    RBAC一般有五张表组成,分别是:

      1.用户表

      2.用户组表

      3.模块表

      4.方法表

      5.用户组-方法表

    如下图所示

    当用户访问某一个页面是,可以通过ThinkPhp的系统常量MODULE_NAME和ACTION_NAME,通过session获取当前用户的ID。

    让网站的所有模块都继承一个AclAction,而AclAction则继承至Action。

    在AclAction中定义一个初始化函数public function _initialize(){},这就意味着当用户访问网站上的任意一个页面时都会执行该函数。

    在initialize()函数中,获取用户Id、ModuleName、ActionName,通过用户Id进行数据库查询获得用户组Id,利用用户组Id、ModuleName、ActionName到数据库中做多表连接查询,查找Group-Action-Action-Module中是否存在同时满足GroupIp、ModuleId、ActionId的记录,若存在则说明用户具有当前页面的访问权限,否则没有,利用ThinkPhp内置函数$this->error()进行提醒并跳转到登陆页面。

    至此,整个RBAC权限把控的流程完成,用户权限认证完成。

  • 相关阅读:
    Memcached基本架构和思想
    varnish和squid的对比
    常用排序讲解
    数据结构堆的一种比较明白的讲解
    磁盘挂载MOUNT 445问题集
    mysql 如何提高批量导入的速度
    云平台涅槃重生计划
    NumPy、SciPy 等Python包在Windows下的whl安装包下载
    表迁移工具的选型-复制ibd的方法
    下一步的技术研究方向
  • 原文地址:https://www.cnblogs.com/wurijie/p/4699723.html
Copyright © 2011-2022 走看看