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这种权限管理的方式,这种二进制的权限管理的方式 无 ...
随机推荐
- php发送邮件——SMTP服务器配置图文教程
准备工作: 注册一个用于网站发送邮件的QQ邮箱(或使用已有的QQ邮箱): http://zc.qq.com/chs/index.html?type=1&app_id=110 ...
- 各种AJAX方法的使用比较
转:http://www.cnblogs.com/fish-li/archive/2013/01/13/2858599.html#_label6 AJAX技术经过这么多年的发展,出现了一些框架或类库用 ...
- MySQL日志管理
MySQL日志管理 2013年09月26日 ⁄ MySQL ⁄ 共 14266字 ⁄ 评论数 ⁄ 被围观 , views+ 一.日志类型: MySQL有几个不同的日志文件,可以帮助你找出mysqld内 ...
- JS中将JSON的字符串解析成JSON数据格式《转》
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...
- codevs 1907 方格取数 3
Description 在一个有m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. Input 第 ...
- 10 个迅速提升你 Git 水平的提示
1. Git自动补全 假使你使用命令行工具运行Git命令,那么每次手动输入各种命令是一件很令人厌烦的事情.为了解决这个问题,你可以启用Git的自动补全功能,完成这项工作仅需要几分钟. 为了得到这个脚本 ...
- http://kb.cnblogs.com/zt/ef/
http://kb.cnblogs.com/zt/ef/ http://blog.csdn.net/mackz/article/details/8605063 http://www.telerik.c ...
- 如何用 fiddler 调试线上代码
有时代码上线了,突然就碰到了坑爹的错误.或者有时看别人家线上的代码,对于一个文件想 fork 下来试试效果又不想把全部文件拉到本地,都可以使用 fiddler 的线上调试功能. 比方说我们打开携程的首 ...
- .NET基于Redis缓存实现单点登录SSO的解决方案
一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单点登录,现在就NET基于Redis缓存实现单点登录做一个简单的分享. 单点登录(Single Sign On),简称 ...
- linux上课
1. service --status-all 2. service sshd restart 3. service --status-all | grep ssh 4. chkconfig --l ...