zoukankan      html  css  js  c++  java
  • 角色模型:用户、部门、角色、权限、模块的关系模型 【转】

    很长时间以来,一直想总结一下自己在编制应用过程中的用户、部门、角色、权限、模块的关系模型,但是由于很多的原因一直没有整理,现在我想仔细的整理一下,与大家交流。


     


    一般简单的角色模型为:用户 -> 权限


    最常用的角色模型为:用户-〉角色-〉权限


     


    我想现在大部分的软件在使用:用户-〉角色->权限
    的关系模型。但是在我做OA这类应用的时候发现,仅仅是这么简单的角色控制实在是太弱,经过长时间的改良,现在我使用的关系模型包括了用户、部门、角色、权限、模块这些内容,它们之间的关系如下:










    这个角色关系比较复杂,图中的箭头指示的是隶属关系,下面我分别介绍各部分的用途。


     


    用户


    用户可以隶属于某一个部门,也可以隶属于某一个角色。用户的权限取决于自己直接指定的权限和她隶属的部门、角色所拥有的权限。


    用户-〉部门:1对1


    用户-〉角色:1对多


     


    部门


    部门属于一个特殊类型,它不光指定某个用户属于哪个部门,它还有自包含的特性。例如:A部门隶属于B部门,这时候A部门会自动继承B部门所有的权限。


    部门-〉部门:1对1


     


    角色


    角色也属于一个特殊类型,他也有自包含的特性。例如:C角色隶属于D角色,则C角色自动继承D角色的权限。


    角色-〉角色:一对多


     


    权限


    权限属于最底层的内容,前面所说的用户、部门、角色都是围绕权限来设计的。


     权限-〉用户:一对多


    权限-〉角色:一对多


    权限-〉部门:一对多


     


    模块


    如果开发的软件具有自定义模块或者是模块式的,这部分就有用了。这个可以根据权限取得用户可以使用的模块列表。


     模块-〉权限:一对多


     


    大致把我使用的角色模型说一下,当然这里面的权限都是以授权为准的,我还想在里面加上权限的禁止。但是一直没有这块的应用需求,所以也没有想过。大家如果有兴趣可以一块想想。

  • 相关阅读:
    CF1454F Array Partition
    leetcode1883 准时抵达会议现场的最小跳过休息次数
    leetcode1871 跳跃游戏 VII
    leetcode1872 石子游戏VIII
    CF1355C Count Triangles
    CF1245D Shichikuji and Power Grid
    CF1368C Even Picture
    CF1368D AND, OR and square sum
    CF1395C Boboniu and Bit Operations
    SpringBoot和开发热部署
  • 原文地址:https://www.cnblogs.com/cxd4321/p/3298559.html
Copyright © 2011-2022 走看看