这是我个人的一个小项目中遇到的。只作为记录使用。正在实践中。现在只作为记录。
首先得理解什么是用户、角色、权限。
用户,常识理解。
角色,是权限的集合,可属于常识。
权限,是个比较抽象的东西,是在这三者中变化最多的东西。
个人认为:如何将权限在特定的项目下具体化,是解决具体项目中用户、角色、权限的关键点。
权限是什么?在看了一些能看懂的博文后,其中一篇中写道:权限是资源和角色的组合。
刚开始并不理解,为何这么说呢,似乎不合逻辑。
就本项目为例,用户分为超级管理员、运维管理员、留言审核权限的普通注册者、普通注册者、游客。这些用户类型可以理解为角色,当然这些角色也需要综合和具体化成具体到项目。
就用户管理功能而言,用户就是资源,然后将角色和资源做组合:
- 超级管理员-用户;
- 运维管理员-用户;
- 留言审核权限的普通注册者-用户;
- 普通注册者-用户;
- 游客-用户。
按照常识和需求,3、4、5组合是不存在的,于是最终产生2个权限,即:
- 超级管理员管理用户
- 运维管理员管理用户
两种情况。如此,在实现过程中,这两种情况有很多地方不同,那么就是两个看起来相似的完全不同的功能。
此前,听过有人对权限这么分类:功能权限、数据权限;可能在某些系统实现时确实如此实现的,但个人对数据权限的理解是:功能权限分解不彻底的结果。
此外,个人感觉以上的表达应该是不专业的,毕竟自己也不是软件功能科班出身,也只是略听过几个软件工程的名词,请读者见谅。
听说过有系统用例的说法,大概意思是某一类人能够做哪些操作,可能和本文中描述的实现类似,应该可以从这个方向对此话题做进一步思考,此处仅作为假设。
还听过:信息,是消除不确定性的东西。既然我们做的是信息系统,那系统中的每个抽象的概念一定是确定性的东西,比如权限;数据权限是否就有点不确定性?只有确定的东西的堆积,才是确信的东西的系统。