rbac admin php,thinkphp RBAC使用说明

[原文](http://www.thinkphp.cn/document/301.html)

我们分两步来啃RBAC。

第一步:了解RBAC里的那些函数是干啥子的。

第二步:使用了RBAC后,我们还需要做啥子工作。

第一步:

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操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值