通用权限的思路。带有数据库关系图

 1、我们的软件里面有哪些功能?
    2、哪些人可以访问到哪些功能结点?
    3、访问到了页面后可以做哪些事情?(查询、添加、修改、删除、导出、打印等)
        (原来的说法:详细权限的划分)
    4、在同一个页面里哪些人可以看到那些信息
        (原来的说法:资源的访问权限)
    这是我的个人见解,是通过几个项目总结出来的,如果不全面、或者不正确的话,欢迎大家及时指正,共同努力、共同提高!
    我设计了下面的这几个表,来解决这些问题。这里我只想表示表之间的关联,至于字段我只是写了几个主要的,字段的设计嘛,大家肯定各有各的方式,我想我写出来主要的就可以了。
 

    我的英文比较差,还是直接用中文吧,这样更直接一些。
    先来看第一个问题,[项目—功能结点][项目—节点拥有的详细权限] 这两个表记录了项目里面有哪些功能结点和详细的功能,
[项目—功能结点 功能节点,可以通过这个表来呈现左面的功能树。记录打开的页面和相关的信息。
[项目—节点拥有的详细权限] 按钮组,一个功能节点(主要是列表页面)有哪些按钮,比如“添加”按钮,“修改”按钮等。记录按钮的名称、打开的页面和相关的信息。
    这两个表是在设计阶段完成的,程序员可以根据这个来实现功能。
    解决了第一个问题后,第二个问题就好办了,[项目—角色][角色拥有的功能结点] 来 实现。
[项目—角色记录项目里面有哪些角色。
[角色拥有的功能结点] 记录一个角色拥有哪些功能结点,功能结点里面有哪些具体的操作(添加、修改等)
    不知道大家的项目的角色是在什么时候诞生的,是在设计的时候吗?还是程序做好之后由用户自己设计?我的做法是后者。因为客户比我们更清楚需要多少角色,需要什么样的角色,一个角色里有哪些功能更合适。
    我们可以做一个维护程序,让客户自行添加。先在角色表里添加一个角色,然后选择角色可以看到的功能页面,最后选择在这个功能结点里可以做的操作(添加、修改等)。这样一个角色就诞生了。
    角色有了之后,就可以给人员分配角色,或者是往角色里添加人员。这样就解决了哪些人可以访问哪些功能节点的问题。
    其实在设计角色的时候就把第三个问题也搞定了。
    客户添加角色的截图
    
    操作也是比较方便的,当点击“计划和日志”前面的方框(打对号)的时候会自动展开下面的子结点和子子节点,然后这些节点都会被选中,后面的按钮也会被选中。
当选中“工作日志”的时候,上面的节点和后面的按钮也会被选中。
    上面的信息全部来自数据库,也就是第一个图里的哪些表。
原文地址:https://www.cnblogs.com/liufei88866/p/1376470.html