ACCESS至于TP的RBAC的行使

  如果您是一个TP的重度使用者来说,请自行略过笔者以下文字

      权限管理我于成一个开发者1年半内,接触了2种植,一种就是数学方法
比如我们文件夹权限的755这种权力管理之方,这种二进制的权杖管理的法
无耻得引入  http://www.cnblogs.com/qfcndtt/archive/2012/08/03/2621713.html这里讲解的也比较详细,不过这种方式适合于权限节点相对较少的系统。也很轻便。

  下面正式启幕THINKPHP的RBAC的讲课

  在系统目录下之Librar/Org/Util目录下之Rbac.class.php

  在config中

  拥有着RBAC的有关的安排文件

  ACCESS 1

  数据库的话,我为我本底一个体系为条例

  角色表 role 

  ACCESS 2

  用户对应之角色表 role_user

  ACCESS 3

  节点表 node

  ACCESS 4

  权限表 access

  ACCESS 5

  先分析下Rbac中负有的较重大的法

  saveAccessList($authId=null) 

  这里保留得传空值的前提是 你于用户登录操作的上要以
$_SESSION[C(‘USER_AUTH_KEY’)]
中拿用户之uid保存下去,然后这里见面将用户所对应的角色有所的权都保存于$_SESSION[‘_ACCESS_LIST’]遭。
有2备受不同是免保留之,一个凡管理员用户(这个用户比特别所以待以组织者登录的时候指定一个$_SESSION[C(‘ADMIN_AUTH_KEY’)])
一个凡打开了实时认证
(实时认证他是匪保留权限的历次权限判断的时都见面更去得用户的权位)

  checkAccess()

  这个是判用户访问的模块和艺术是否要权限认证
(此方式中调用的不用关心)

  checkLogin() 

  该办法是判用户是否登录,如果非登录则超越反至指定路线,正常的系统会超越到用户登录页面

  AccessDecision()

  该方法可这里权限判断的第一点,因为这法子就是判用户是否来看权限的,具体的逻辑是优先夺看清是否用权限认证(checkAccess),然后去押是否是组织者,如果不是管理员就看是否被了实时认证,如果翻开了,就更去调取用户之权杖列表,然后去判断访问的权力是否在反复组里,如果没有拉开则一直从$_SESSION[‘_ACCESS_LIST’]屡遭读取判断。

  getAccessList($authId)

  这里个人觉得才是这类似吃之无比关键之法门。具体来说,笔者还是盼望读者自己失去看下此的代码,应该基本就是是那么几只sql语句,做到了角色继续,不过我做权限管理的话,还是把这个效果默认放弃了,觉得无极端好开展。

  /***********今天自己执教下什么利用这Rbac*************/

  1:用户登录的事态下

  用户登录成功后保存authId;判断是否是组织者,然后调用saveAccessList去保存权限

  ACCESS 6

  2:用户以拜访系统的下我们而做权限判断

  先失判断用户是否登录,如果无登录跳回登录页面

  然后去看清用户是否发看的权限,如果没则为定ajax或者页面访问的报错方式

  ACCESS 7

  看吧就是这般简单,不过自己还是建议用户越来越是时常采取tp的开发者,多夺押下这些办法的源代码,毕竟读源代码对于个体的升级是非常挺的。

相关文章