rbac

<?php
//+------------------------------------------------------------------+
//@Author sgsheg@qq.com
//@time 2012/9/8
//+------------------------------------------------------------------+
//Tp中的权限控制也就是rbac

//安全拦截器

//安全管理器(识别不同的身份,你的用户名和密码还有权限是否在授权范围内)

//决策访问管理器 (即时模式,登录模式)

//运行身份管理(单身份)
/*+-------------------------------------------------------------------+
/*何为RBAC
* 基于角色的访问控制(Role_Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注.是一种较新且广为使用的访问机制,且不同于老的.
*
* S=主体=一名使用者或自动代理人
* R=角色=被定义为一个授权等级的工作职位或职称
* P=权限=一种存取资源的方式
* SE=会期=S,R或P之间的映射关系
* SA=主体指派
* PA=权限指派
* RH=角色阶层
*
* 一个主体对应多个角色
* 一个角色对应多个主体
* 一个角色可拥有多个权限
* 一种权限可被分配为多个角色
* 一个角色可以拥有专属于自己的权限

老外网站解释:http://csrc.nist.gov/groups/SNS/rbac/faq.html
/*+-----------------------------------------------------------------------------+
* RBAC:一种基于角色的访问控制,这是一种思想!
* 在php中就是对多个用户有同样的权限, 可以给与这些用户同一个角色,然后通过角色来对操作进行控制.
*
* 第一张表:
* 用户登录表:
+-----------------------------------------------+
字段 说明
id 登录id
username 用户名
passwd 用户密码
+-----------------------------------------------+
*
* 第二表
* 角色表
+-----------------------------------------------+
字段 说明
id 用户角色id
name 用户角色名称
+-----------------------------------------------+
* 第三张
* 节点表
+-----------------------------------------------+
id 操作节点id
name 操作节点名称
remark 节点的中文说明
+-----------------------------------------------+
*
* 第四表
* 节点---->角色 表

+-----------------------------------------------+
role_id 用户角色id
note_id 操作节点id
+-----------------------------------------------+

* 第五表
* 用户---->角色
+-----------------------------------------------+
role_id 用户角色id
user_id 用户id
+-----------------------------------------------+

* 那么五张表的运行过程:
* 进入网站登录->输入用户->密码-------->登录
* 依照表一,判断用户是否能够登录.
*
* 如何合法,得到用户的user_id
*
* 根据user_id,得到在第五表中得到用户的角色ID
*
* 拿到了role_id,去第四表,查出用户的note_id,查询出拥有的节点访问权限
*
* 将权限存入SESSION,当用户访问某一个模块的时候,用SESSION中的权限与$_GET['m']和$_GET['a']去对比,如果用户的$_GET['m']或者是$_GET['a']在SESSION中不存在的时候,说明用户没有权限,做出反应.
*
*+------------------------------------------------------------+
* 到tp里面根据tp的例子改吧改吧就是咱的了!!!!
*
*
* 节点:
* 项目1 模块:2 方法:3
* 你得让用户先访问项目,再访问模块,再访问方法.
* 他们之间的关系就叫做节点.
* 将所有的节点全部可控制,将所有的项目下的模块,模块下的方法加入到节点表中.
*
* access控制各个角色(各组是否能够访问某个模块,某个项目)
* 在access表中的有的就可以访问,没有的就不能访问.这个角色在access中有节点有访问权限.先访问项目,才能是模块,然后是方法.
*
*
*

?>

posted @ 2012-09-12 10:01  sgsheg  阅读(155)  评论(0编辑  收藏  举报