FleaPHP框架中的RBAC

RBAC(Role-Based Access Control)角色访问控制提供了一种高效的用户-权限控制,它引入了Role概念把用户和权限隔离,它把聚合一个或者多个权限聚合,用户通过与其建立会话来得到权限.

它的应用带来的直接后果是效率的提高--你不用为每个拥护赋予权限.

对比自己开发时写的权限控制--用户权限登陆时每项操作权限存储在SESSION中,在每个具体行为执行前判断SESSION中对应成员值来控制是否执行.  RBAC无疑更加高效,安全,维护成本也更低.

最近在看FleaPHP框架,在它的MVC模式中,RBAC系统的执行是通过用户信息管理器、角色信息管理器和访问控制器三个部件来实现的:

用户信息管理器:提供用户信息的存储、查询服务,以及为用户指定角色信息

角色信息管理器:提供角色信息的存储和查询服务

访问控制器:根据角色信息和访问控制表进行验证


其基本使用方法如下:

1.在FleaPHP中使用RNAC需要让应用程序使用 FLEA_Dispatcher_Auth 调度器,而不是默认的 FLEA_Dispatcher_Simple 调度器。

<? php

require ( ' FLEA/FLEA.php ' );
set_app_inf(
' dispatcher ' ,   ' FLEA_Dispatcher_Auth ' );

 * 其他初始化代码

run();

?>

2.准备控制器的 ACT 文件

ACT 文件和控制器文件同名,并且保存在同一个目录下,只是扩展名为 .act.php。通常使用下面的格式:

<? php

return   array (
    
' allow '   =>   ' POWER_USER, SYSTEM_ADMIN ' ,

    
' actions '   =>   array (
        
' remove '   =>   array (
            
' allow '   =>   ' SYSTEM_ADMIN ' ,
        )
,

        
' create '   =>   array (
            
' deny '   =>   ' SYSTEM_ADMIN ' ,
        )
,
    )
,
);

?>

ACT 文件只是单纯的返回一个数组。这个数组遵循下面的格式:

array (
    
' allow '   =>   ' 允许访问该控制器的角色名 ' ,
    
' deny '   =>   ' 禁止访问该控制器的角色名 ' ,

    
' actions '   =>   array (
        
' 动作名 '   =>   array (
            
' allow '   =>   ' 允许访问该动作的角色名 ' ,
            
' deny '   =>   ' 禁止访问该动作的角色名 ' ,
        )
,
        
//  .... 更多动作
    ) ,
);

3.验证

从SESSION中取出用户的角色信息存入数组中.然后取出然后取出控制器的 ACT进行验证,通过验证的结果就可以决定用户的行为了.其中,用户信息服务和角色信息服务有应用程序的具体应用确定,应用程序在用户建立起session时(比如登陆)指定角色相应角色.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值