ThinkPHP的RBAC
基于角色的访问控制(Role-Based Access Control)
在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。

ThinkPHP通过5张表实现权限控制
think_user (用户表)
think_role (用户分组表)
think_node (操作节点)
think_role_user (用户和用户分组的对应)
think_access (各个操作和用户组的对应)
认证过程
1.判断当前模块的当前操作是否需要认证
2.如果需要认证并且尚未登录,跳到认证网关,如果已经登录 执行5
3.通过委托认证进行用户身份认证
4.获取用户的决策访问列表
5.判断当前用户是否具有访问权限
配置config文件
array(
'APP_AUTOLOAD_PATH'=>'@.TagLib',
'SESSION_AUTO_START' =>true,
'USER_AUTH_ON' =>true,
'USER_AUTH_TYPE' =>, // 默认认证类型 1 登录认证 2 实时认证
'USER_AUTH_KEY' =>'authId', // 用户认证SESSION标记
'ADMIN_AUTH_KEY' =>'administrator',
'USER_AUTH_MODEL' =>'User', // 默认验证数据表模型
'AUTH_PWD_ENCODER' =>'md5', // 用户认证密码加密方式
'USER_AUTH_GATEWAY' =>'/Public/login',// 默认认证网关
'NOT_AUTH_MODULE' =>'Public', // 默认无需认证模块
'REQUIRE_AUTH_MODULE' =>'', // 默认需要认证模块
'NOT_AUTH_ACTION' =>'', // 默认无需认证操作
'REQUIRE_AUTH_ACTION' =>'', // 默认需要认证操作
'GUEST_AUTH_ON' =>false, // 是否开启游客授权访问
'GUEST_AUTH_ID' =>, // 游客的用户ID
'DB_LIKE_FIELDS' =>'title|remark',
'RBAC_ROLE_TABLE' =>'think_role',
'RBAC_USER_TABLE' =>'think_role_user',
'RBAC_ACCESS_TABLE' =>'think_access',
'RBAC_NODE_TABLE' =>'think_node',
'SHOW_PAGE_TRACE' =>1 //显示调试信息
);
注:
Public模块是无需认证的
默认网关地址就是认证失败,没有权限跳转到此处,重新登陆
ADMIN_AUTH_KEY表示超级管理员权限,不用分配权限,它什么权限都有
重要的方法:
authenticate($map,$model=”) 传入查询用户的条件和用户表的MODEL 返回数组包含用户的信息
saveAccessList($authId=null) 传入用户的ID,无返回值,只是设置 $_SESSION[‘_ACCESS_LIST’]的值
checkAccess() 检测当前模块和操作是否需要验证
checkLogin() 检测登录
AccessDecision($appName=APP_NAME) 检测当前项目模块操作 是否在$_SESSION[‘_ACCESS_LIST’]数组中
$_SESSION[‘_ACCESS_LIST’][‘当前操作’][‘当前模块’][‘当前操作’]是否存在,存在,表示有权限
getAccessList($authId) 通过查询数据库 返回权限列表,$_SESSION[‘_ACCESS_LIST’]的值
ThinkPHP的RBAC的更多相关文章
- ThinkPHP中RBAC权限带菜单栏显示和详细权限操作
RBAC是什么,能解决什么难题? RBAC是Role-Based Access Control的首字母,译成中文即基于角色的权限访问控制,说白了也就是用户通过角色与权限进行关联[其架构灵感来源于操作系 ...
- ThinkPHP的Rbac权限控制
RBAC(Role-Based Access Controll)基于角色的访问控制 在 ThinkPHP3.2.3 中 RBAC 类位于 /ThinkPHP/Library/Org/Util/Rbac ...
- ThinkPHP中RBAC权限管理的简单应用
RBAC英文全称(Role-Based Access Controller)即基于角色的权限访问控制,简单来讲,一个用户可以拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色-权限”的授 ...
- thinkphp 比RBAC更好的权限认证方式(Auth类认证)
Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比RBAC更方便 . RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了, ...
- ThinkPHP实现RBAC
RBAC: role base access control 基于角色的用户访问权限控制 不同人员登录系统要显示不同的菜单项目 1.传统方式权限设置: 具体操作权限与用户直接联系:
- 基于thinkphp的RBAC权限控制
RBAC Role-Based Access Control 权限控制在后台管理中是十分常见的,它的模型大体上是下面这张图的形式 我用的字段和上面不一样,图只是个示例 一个简易的权限控制模型只需要3 ...
- ThinkPHP的RBAC原理分析
转载 http://jingyan.baidu.com/article/a948d65151a4810a2ccd2e60.html 方法/步骤 多用户对节点的操作的权限控制,这句话,经过反复扩展功能, ...
- thinkphp权限管理Rbac实例
首先,先建立Rbac那五张表(用户表,角色表,节点表,权限表,角色-用户表),后面四张可以在thinkphp中Rbac类里直接复制. 第二步,根据需求往那五张表里插入数据,注意:节点表里的节点名称一定 ...
- 关于TP的RBAC的使用
如果你是一个TP的重度使用者的话,请自动略过笔者以下文字 权限管理我在成为一个开发者1年半内,接触过2种,一种就是数学方式 比如我们文件夹权限的755这种权限管理的方式,这种二进制的权限管理的方式 无 ...
随机推荐
- NOIP模拟赛 夕阳
题目描述 “我有个愿望,我希望在灿烂千阳时遇见你.” 这是个有n个点的世界,有m条无向边连接着这n个点,但是不保证点之间能够互相到达. “这个世界的夕阳,只在奇数长的简单路径的尽头.”一个神如是说. ...
- BZOJ 1026 【SCOI2009】 windy数
Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? I ...
- 使用ViewBag传送数据从控制器至视图
前一篇<ASP.NET MVC读取XML并使用ViewData显示>http://www.cnblogs.com/insus/p/4308740.html 中,在控制器中使用了ViewDa ...
- 阿里云Center OS 6.2 Nginx 配置 SSL/TLS HTTPS配置
1.通过https://www.startssl.com/ 免费SSL证书 STARTSSL 跟VeriSign一样,StartSSL(网址:http://www.startssl.com,公司名:S ...
- 将packages/apps/下的app导入eclipse
当刚接触android自带的一个模块时,如何去熟悉它?相信不少人第一步都会尝试着去了解其内容的调用流程,而此时若能够单步调试则显得非常重要了,于是有了文章标题所说的尝试. 作者这里要导入的是Setti ...
- struts2: config-browser-plugin 与 convention-plugin 学习
struts2被很多新手诟病的一个地方在于“配置过于复杂”,相信不少初学者因为这个直接改投Spring-MVC了.convention-plugin. config-browser-plugin这二个 ...
- caffe的python接口学习(3):训练模型(training)
如果不进行可视化,只想得到一个最终的训练model, 那么代码非常简单,如下 : import caffe caffe.set_device(0) caffe.set_mode_gpu() solve ...
- web 前端常用组件【01】Pagination 分页
分页组件几乎是一般网站都会涉及到的组件,网上有很多这样的插件,自己挑来跳去选择了这一款. 官方Demo网址:http://mricle.com/JqueryPagination 功能强大,可扩展性比较 ...
- 简单高效的nodejs爬虫模型
这篇文章讲解一下yunshare项目的爬虫模型. 使用nodejs开发爬虫很简单,不需要类似python的scrapy这样的爬虫框架,只需要用request或者superagent这样的http库就能 ...
- centos7 安装nginx和php5.6.25遇到 无法访问php页面 报错file not found 问题解决
php-fpm安装完成,nginx安装完成 netstap -ntl| 发下端口正常开启 iptables -L 返现9000端口已经开放 ps -aux|grep nginx 发下nginx进程正常 ...