今天看了下Thinkphp示例中的rbac的示例,大概说下实现的思路
1、检测是否开启了权限验证
2、检测当前模块是否需要验证
3、检测当前操作是否需要验证
4、获取用户所属角色的拥有的权限
5、根据所获取的权限来验证当前的操作是否允许。
有两个疑问:
1、当前操作是否需要验证,tp给出了使用配置文件中的两个参数,一个存储需要验证的操作,一个是不需要验证的操作,但是使用当前的操作来与他们进行匹配,若果不需要验证的操作里面有add这个方法的话,所有模块的add方法都会跳过验证.
2、公共模块的操作,在获取角色拥有权限的时候,会把公共模块的操作叠加到当前模块的权限列表中,也就是在赋予一个角色公共模块的添加操作的话,那么当前模块的添加操作不管有没有都会添加进去.