关于权限控制的讨论:操作与数据
2015-12-13 11:14
363 查看
在上一篇中,我说过Shiro的wildcardpermission帮我们抽象出一个极具渊源的权限字串:『资源:操作:实例』。
在实际的使用中,我们发现,操作与实例,即『操作』与『数据』,其实可以理解为权限控制的两个角度,并非仅仅是递进层次。即:
换言之,又比如:张三是会计,李四是销售,则他们拥有不同的操作权限;而如何张三和李四均为销售,但是一个是销售一部,一个归属销售二部,则他们的权限差异则在于数据,而非动作。
实践中,能很好的体现出这个关系的是『部门』和『角色』。
部门,是用户组,而不应该是角色组。所以,部门是可以与用户一样,控制当前用户对不同数据进行操作的权限。
角色,可作为用户的一个特殊属性,代表了多个permission,进而言之,它代表的是一组操作权限。
所以,在实践中,我们可以从两个角度给用户分配权限,一是他所归属的部门,决定了他的数据权限;另一个是他拥有的角色,决定了他的操作权限。从两个角度织出当前用户精细的权限地图。
在实际的使用中,我们发现,操作与实例,即『操作』与『数据』,其实可以理解为权限控制的两个角度,并非仅仅是递进层次。即:
province:*:bj表示可对北京的数据进行各种操作,而
province:edit:*表示可以编辑所有省分的数据。
换言之,又比如:张三是会计,李四是销售,则他们拥有不同的操作权限;而如何张三和李四均为销售,但是一个是销售一部,一个归属销售二部,则他们的权限差异则在于数据,而非动作。
实践中,能很好的体现出这个关系的是『部门』和『角色』。
部门,是用户组,而不应该是角色组。所以,部门是可以与用户一样,控制当前用户对不同数据进行操作的权限。
角色,可作为用户的一个特殊属性,代表了多个permission,进而言之,它代表的是一组操作权限。
所以,在实践中,我们可以从两个角度给用户分配权限,一是他所归属的部门,决定了他的数据权限;另一个是他拥有的角色,决定了他的操作权限。从两个角度织出当前用户精细的权限地图。
相关文章推荐
- Android 启动模拟器是出现“Failed to allocate memory: 8”错误提示的原因及解决办法
- pascal--生成Pascal矩阵
- AngularJs实战(四)
- 接口回调的使用方法
- Javaweb工程找不到jquery问题
- [javase学习笔记]-4.2 定义函数的两个明确
- POJ3614与优先队列
- 析构函数为什么一定写成虚函数的形式 http://blog.sina.com.cn/s/blog_4b146a9c0100sgyg.html
- Android(零)基础-eclipse文件结构
- 关于java中的多态理解
- github结合TortoiseGit使用sshkey,无需输入账号和密码
- HDU 1033 Edge 模拟
- HighChartS cpu利用率动态图(Java版)
- invhilb--生成逆希尔伯特矩阵
- linux mount
- Just a Hook hdu1698 [线段树区间更新]
- hilb--生成Hilbert(希尔伯特)矩阵
- 第七次作业(用户报修系统)
- 快速幂算法
- Hadoop2.7.1环境搭建(基于linux)