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权限把控的流程完成,用户权限认证完成。

ThinkPhp RBAC实现原理的更多相关文章

  1. ThinkPHP RBAC权限管理机制

    RBAC是ThinkPHP很好用的后台权限管理的,话不多说,实现方法如下,也方便以后自己查询使用: 1.新建4个数据库表 self_role权限表 CREATE TABLE `self_role` ( ...

  2. ThinkPHP 参数绑定原理

    ThinkPHP里有一个参数绑定的功能 想自己试着写一个类似的 主要利用到PHP里的反射的API <?php class Index { public function edit($id=0) ...

  3. Yii rbac原理和实践

    Yii框架中集成分层的 RBAC,代码位于vendor\yiisoft\yii2\rbac中,rbac工作原理分为两部分,建立授权数据和进行权限检查. 如上,一个角色拥有某个权限,如果希望用户拥有这个 ...

  4. 使用ThinkPHP框架高速开发站点(多图)

    使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助 ...

  5. 使用ThinkPHP框架高速发展网站(多图)

    使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助 ...

  6. RBAC权限管理及使用原生PHP实现

    关于RBAC的原理讲解在网上可以找到很多,推荐:编程浪子的RBAC讲解,本篇博客就不再累述RBAC的原理到底是什么样的. 传统的权限控制有ACL和RBAC方式,ACL的耦合度很高,扩展性不佳,RBAC ...

  7. 新闻cms管理系统(一) ---- thinkphp框架准备

    1.thinkphp介绍 一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架 MVC:M数据层. V视图层 . C控制层 优点: (1)入手非常快 (2)thinkpjp提供核心内库.文件.函 ...

  8. 网站安全检测 漏洞检测 对thinkphp通杀漏洞利用与修复建议

    thinkphp在国内来说,很多站长以及平台都在使用这套开源的系统来建站,为什么会这么深受大家的喜欢,第一开源,便捷,高效,生成静态化html,第二框架性的易于开发php架构,很多第三方的插件以及第三 ...

  9. [转]使用ThinkPHP框架快速开发网站(多图)

    本文转自:http://blog.csdn.net/ruby97/article/details/7574851 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkP ...

随机推荐

  1. 发送html邮件a标签中的url不显示的问题

    最近做的一个项目中,需要用到邮箱激活功能,但是遇到一个问题! 问题描述:发送邮箱之后,邮箱的激活链接的href属性不见了!!! 因为我采用的是本地的地址做测试,后来用百度的链接替换我的href地址又可 ...

  2. PHP 核心特性之匿名函数

    提出 在匿名函数出现之前,所有的函数都需要先命名才能使用 1 2 3 4 5 function increment($value) {     return $value + 1; } array_m ...

  3. 关于Java运行机制

    目录 编译型语言与解释型语言的区别 编译型语言 解释型语言 细数两者之差别 Java的奇怪之处 Java的编译 Java的解释 具体机制 Java既是编译型语言,也是解释型语言. 首先先查找关于两种语 ...

  4. <编译原理 - 函数绘图语言解释器(2)语法分析器 - python>

    <编译原理 - 函数绘图语言解释器(2)语法分析器 - python> 背景 编译原理上机实现一个对函数绘图语言的解释器 - 用除C外的不同种语言实现 设计思路: 设计函数绘图语言的文法, ...

  5. https安全在哪里,原理是什么?

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/52214842 本文出自: [HansChen的博客] Https通信基本过程 在通信 ...

  6. c#-EntitySet<TEntity>

    MSDN 解释: https://msdn.microsoft.com/zh-cn/library/bb341748.aspx 为 LINQ to SQL 应用程序中的一对多关系和一对一关系的集合方提 ...

  7. 基于 Vue3.0 Composition Api 快速构建实战项目

    Quick Start 项目源码:https://github.com/Wscats/vue-cli 本项目综合运用了 Vue3.0 的新特性,适合新手学习

  8. python 备忘录

    1. python 变量 区分大小写 2. 字符串可以用   'X'  "X"  '''X'''  """X""" 3. ...

  9. ruby方法名之命名方式

    上一篇博文 ruby传参之引用类型 里边定义了一个方法名 modify_my_object!,这个方法名是以 ! 结尾,在 ruby 的对象里边是用于表达修改本身的意思. 比如 String#gsub ...

  10. CSRF的原理与防御 | 你想不想来一次CSRF攻击?

    CSRF是Cross Site Request Forgery的缩写,中文翻译过来是跨站请求伪造.这个漏洞往往能给用户带来巨大的损失,CSRF在等保安全检测中,也是一个非常重要的检测项.但是在我们的网 ...