项目都比较小,一般都是几个用户,所以之前都是用自己写的验证,就是基于用户和权限,两个表搞定。一直没研究TP的RBAC。
一直听大伙抱怨RBAC麻烦,难懂。
我看了一下官方的demo,的确是很繁琐,而且其用到的config.php参数及表DDL也与RBAC.Class.php中注释的差异极大,这就使初学者更加迷惑了。我也迷惑了老半天。
今天实在闲的很,于是仔细逐行研究了RBAC.Class.php,总共也就300行代码,去掉注释和换行符只有200行了。
发现RBAC.Class.php还是非常精炼的,使用起来也是够简单的,而且很灵活。
但是恰恰是这灵活性让新手感到迷惑!
好了,不多说了,一下内容是给新手看的,老手可以略过了。
言归正传,我们分两步来啃RBAC。
第一步:了解RBAC里的那些函数是干啥子的。
第二步:使用了RBAC后,我们仔细还需要做啥子工作。
OK,Let's 啃!
第一步:
RBAC.Class.php中有若干函数,其中我们新手直接打交道的却只有一下几个:
authenticate() saveAccessList() checkLogin() AccessDecision()
什么?你问我它们是干啥的?好,且听我先啰嗦几句认证的过程。
1、检查系统是否开启认证功能C('USER_AUTH_ON')
2、检查当前操作是否需要认证
3、如果当前操作需要认证,检查当前用户是否具有权限。if(有),啥也不做。
4、if(没有),检查原因。如果是因为没有登录,跳转至登录页面。如果是没有权限,报错。
这4步就完成了用户的认证,其中 AccessDecision()就搞定了前三步!
而checkLogin()负责第4步中检查浏览器是否登录。
哈哈,还剩下两个了,我想来想去,觉得还是应该放到第二步中来说明
第二步:
既然RBAC.Class.php这么强,帮我们搞定了这么多工作,那么我们是不是啥也不用做了?
答案让大家很失望,我们还需要写一些代码。
首先我们需要在要认证模块中加入一下代码
protected function _initialize(){
Import ( 'ORG.Util.RBAC' );
if (! RBAC::AccessDecision ())//未通过认证
{
// 登录检查
RBAC::checkLogin();
// 提示错误信息 无权限
$this->error ( L ( '_VALID_ACCESS_' ) );
}
}
复制代码
目的就是告诉程序,在未通过认证的时候,需要怎么做。
另外,我们需要在用户输入用户名和密码的时候检测一下用户是否输入的正确,这个东东也就是所谓的认证网关。
名称在config.php中用'USER_AUTH_GATEWAY'定义。
我的代码如下所示:
//生成认证条件
$map = array();
$map['account'] = $_POST['account'];
$map["status"] = array('gt',0);
import ( 'ORG.Util.RBAC' );
$authInfo = RBAC::authenticate($map);
//使用用户名、密码和状态的方式进行认证
if(false === $authInfo)
{
$this->error('帐号不存在或已禁用!');
}
else
{
if($authInfo['password'] != md5($_POST['password']))
{
$this->error('密码错误!');
}
$_SESSION[C('USER_AUTH_KEY')] = $authInfo['id'];
if($authInfo['account']=='admin')
{
$_SESSION[C('ADMIN_AUTH_KEY')] = true;
}
// 缓存访问权限
RBAC::saveAccessList();
$this->success('登录成功!');
复制代码
好了,这样一个完整的RBAC认证就完成了。
当然了,你或许还需要一个完整的用户/权限管理系统。
如果你把以上基本原理搞明白,那个就很容易明白了,具体可以参考官方的RBAC示例。
里边不过是对user role role_user node access这几个表做“增删改查”操作,并不涉及基本的RBAC操作。
已经脱离本文的内容了,故不再说明。
- 浏览: 41799 次
- 性别:
相关推荐
thinkphp rbac 实例基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。 在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些...
thinkphp rbac权限控制数据库
**ThinkPHP RBAC架构代码详解** 在Web开发中,权限管理是不可或缺的一部分,尤其是对于大型企业级应用。Role-Based Access Control(RBAC)基于角色的访问控制是一种有效的权限管理模式,它将用户与权限通过角色...
标题:“Thinkphp RBAC项目实例”揭示了如何在Web开发中实施基于角色的访问控制(Role-Based Access Control,简称RBAC)系统。这是一个关键的安全管理机制,用于管理和限制用户对应用程序不同部分的访问权限。在...
《基于ThinkPHP6的RBAC后台管理系统与LayUI界面详解》 在现代Web开发中,构建高效、安全且易维护的后台管理系统是至关重要的。本文将深入探讨一个基于ThinkPHP6框架和LayUI前端库实现的角色权限控制(Role-Based ...
《PHP.zip:构建高效能的PHP后台与ThinkPHP RBAC前端框架详解》 在现代Web开发中,PHP作为服务器端脚本语言,以其强大的功能和灵活性深受开发者喜爱。结合ThinkPHP框架,我们可以快速构建出高性能的后台系统。而...
ThinkPHP2.1 RBAC使用和示例操作
RBAC是一种广泛使用的权限管理模型,它通过角色来分配权限,有效地简化了权限管理的复杂性。 1. **RBAC模型介绍**:RBAC模型主要包括三个核心概念:用户(User)、角色(Role)和权限(Permission)。用户通过担任...
**ThinkPHP5 RBAC系统详解** ThinkPHP5是一款流行的PHP框架,它以其高效、简洁的代码结构和丰富的功能集在Web开发领域广受欢迎。RBAC(Role-Based Access Control,基于角色的访问控制)是一种常见的权限管理模型,...
在本节课程“ThinkPHP(RBAC)权限管理系统_第30讲_角色导航菜单加载”中,我们将深入探讨如何在ThinkPHP框架下构建一个基于RBAC(Role-Based Access Control,角色基础访问控制)的权限管理系统,并重点讲解如何实现...
ThinkPHP2.1.0 RBAC类使用简析.chm ThinkPHP2.1.0 RBAC类使用简析.chm ThinkPHP2.1.0 RBAC类使用简析.chm
标题 "thinkphp rbac" 指的是使用 ThinkPHP 框架实现的基于 Role-Based Access Control(RBAC)的权限管理系统。ThinkPHP 是一款流行的开源 PHP 框架,它提供了一系列工具和功能,帮助开发者快速构建 web 应用程序。...
《ThinkPHP3.1框架下的RBAC用户角色认证管理详解》 在Web开发领域,权限控制是不可或缺的一部分,尤其在企业级应用中更是如此。ThinkPHP作为一款深受开发者喜爱的PHP框架,其3.1版本提供了强大的RBAC(Role-Based ...
本资源分享的是ThinkPHP实现RBAC权限管理的源代码,对于理解RBAC机制和学习如何在ThinkPHP中实现权限控制具有重要价值。 RBAC模型主要包括三个核心概念:用户(User)、角色(Role)和权限(Permission)。用户通过...
thinkphp中的rbac文档,让你对rbac更加了解!
ThinkPHP2.1.0 RBAC示例操作演示.chm ThinkPHP2.1.0 RBAC示例操作演示.chm ThinkPHP2.1.0 RBAC示例操作演示.chm
在本节教程“ThinkPHP(RBAC)权限管理系统_第6讲_添加角色”中,我们将深入探讨如何在基于ThinkPHP框架的系统中实现角色(Role-Based Access Control,RBAC)的管理,尤其是如何添加新的角色。RBAC是一种广泛使用的...
在本节教程“ThinkPHP(RBAC)权限管理系统_第9讲_添加权限”中,我们将深入探讨如何在基于ThinkPHP框架的系统中实现RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理功能。RBAC是一种常用的身份验证...
### ThinkPHP2.1 RBAC使用与示例操作解析 #### RBAC类使用简析 在ThinkPHP2.1框架中,RBAC(Role-Based Access Control,基于角色的访问控制)是一种常用的安全策略,用于实现对系统资源的访问控制。通过定义不同...