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_ACCESS,KEY’)])
一个是敞开了实时认证
(实时认证他是不保留权限的历次权限判断的时候都会重新去取得用户的权能)

  checkAccess()

  这一个是判定用户访问的模块和章程是不是必要权限认证
(此方式内部调用的不用关注)

  checkLogin() 

  该措施是判断用户是或不是登录,如果未登录则跳转到指定路线,正常的连串会跳到用户登录页面

  AccessDecision()

  该方式然而那里权限判断的关键点,因为这些法子就是判定用户是不是有访问权限的,具体的逻辑是先去看清是还是不是要求权限认证(checkAccess),然后去看是或不是是管理员,若是还是不是社团者就看是或不是开启了实时认证,假若打开了,就再次去调取用户的权位列表,然后去判断访问的权杖是还是不是在数组里,如若没打开则直接从$_SESSION[‘_ACCESS_LIST’]中读取判断。

  getAccessList($authId)

  那里个人认为才是那些类中的最为重大的办法。具体来说,作者依旧愿意读者自己去看下那里的代码,应该基本就是这一个sql语句,做到了角色继续,然而我做权限管理以来,依旧把那些意义默许舍弃了,觉得不太有利举行。

  /***********前扶桑身教学下什么样行使那么些Rbac*************/

  1:用户登录的情事下

  用户登录成功后保存authId;判断是还是不是是管理员,然后调用saveAccessList去保存权限

  ACCESS 6

  2:用户在造访系统的时候大家要做权限判断

  先去判断用户是或不是登录,假设未登录跳回登录页面

  然后去看清用户是还是不是有访问的权力,假若没有则给定ajax或者页面访问的报错形式

  ACCESS 7

  看呢就是这么简单,不过自己或者提议用户越来越是常事使用tp的开发者,多去看下这几个点子的源代码,毕竟读源代码对于私有的升迁是很大的。

相关文章