[杂谈] 用户、角色及权限漫谈

用户、角色、权限是一个软件里的多用户系统的基本内容。那么它们之间的相互关系,以及在系统设计中要考虑啥呢?

首先,是它们之间的关系,其基本关系我们可以概括为:一个用户隶属于一到多个角色,它的权限来自于自身和所隶属的角色继承而来。而权限本身也可以分组,子权限是父权限的一个子项,如果用户选中了父权限,那么它也就同时拥有了子权限。

那么,接下来,我们考虑冲突问题:

  • 既然一个用户可以隶属多个角色,那么这个角色之间的权限冲突了怎么办?比如 A 继承了角色 B 和角色 C 的权限,B 和 C 同时规定了对 D 的访问权限,但 B 角色允许访问,而 C 角色不允许怎么办?
  • 角色是否可以继承?如果角色可以继承,那么角色一个角色是否可以从多个父角色继承权限呢?继承的时候,出现冲突该怎么办?

好了,上面列出两个问题。我们再来考虑用户这个对象:

  • 用户是否允许登录?
  • 用户账号是否能够是隐藏的账号?至于为啥隐藏,不知道的话,你就不必考虑这个问题了:)
  • 用户是否允许多点登录?如果允许多点登录,那么该如何区分每个用户的每个登录?
  • 用户登录来源是否需要限制?
  • 用户登录时间是否需要限制?
  • 用户登录频率是否需要限制?
  • 用户密码强度是否需要限制?
  • 如何区分管理员账号、普通账号和来宾账号?
  • ……

好了,用户相关的问题大概先列这么多。根据上面的逻辑考虑,那么一个满足绝大多数需要的用户、角色、权限的数据表的定义相信大家已经可以有大概的想法了,至于如何实现上述逻辑?俺只负责抛砖,至于玉在那儿?自己写或者慢慢等吧。

在这里,我是提出问题,然后大家可以分析并设计出面向对象的类关系。

分享到: