摘自:http://www.thinkphp.cn/topic/28710.html
相同点:
1.两种都是基于角色权限控制;
2.都是同一个用户可属于多个角色或用户组;
不同点:
Rbac:
1.Rbac是基于节点控制,根据3级节点,module,controller,action,节点类似与树形结构,3级节点间相互有关联;
2.表关系:用户表->用户角色关联表->角色表->角色节点关联表->节点表;
3.根据3级节点控制,粒度到操作action,每个节点为单一的模块,控制器或操作;
Auth:
1.Auth是基于规则控制,定制规则和条件表达式 ,每一条规则都是独立的;
2.表关系:用户表->用户和用户组关联表->用户组表->规则表;
3.根据规则控制,可自由定制不同的规则,非常自由,同一个规则内可以定制多个不同节点(中间的关系:OR AND);
4.可定制规则表达式,比如定制积分表达式;
Auth数据表设计
摘自:http://www.thinkphp.cn/topic/9679.html和http://www.thinkphp.cn/topic/28596.html
认证规则表:think_auth_rule

type:tinyint类型的,如果type为1,condition字段就可以定义规则表达式。如定义{score}>5 and {score}<100,表示用户的分数在5-100之间时这条规则才会通过。(默认为1)
condition:当type为1时,condition字段里面的内容将会用作正则表达式的规则来配合认证规则来认证用户
用户组表:think_auth_group

用户和组的对应关系表:think_auth_group_access

关于官方源文件注释的问题
摘自:http://www.thinkphp.cn/topic/28596.html

Auth的定义和调用


问题与不解
Auth类里面有五个参数,其中,$type跟$mode比较费解。
有些文章说$type对应think_auth_rule表的type字段,用了判断是否验证附件条件,我觉得好像不是。
最佳答案