关于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的相干的布局文件

  图片 1

  数据库的话,我坐己现在之一个系统吧例

  角色表 role 

  图片 2

  用户对应的角色表 role_user

  图片 3

  节点表 node

  图片 4

  权限表 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去保存权限

  图片 6

  2:用户在访问系统的上咱们只要召开权限判断

  先去看清用户是否登录,如果不登录跳回登录页面

  然后错过看清用户是否发生看的权能,如果没有则让定ajax或者页面访问的报错方式

  图片 7

  看吧就是如此简单,不过我或建议用户更是时常下tp的开发者,多去看下这些方法的源代码,毕竟读源代码对于私有的升级是充分十分的。

相关文章