系统权限设计

此系统权限设计的困难之处就在于用户不是单一的,除了三种身份的用户外,每种用户又可以分角色。如果只是一种用户,然后来分角色的话,就容易得多。所以得想办法把用户存入一张表,然后再来设计权限。另外一个难点就是即可以通过角色授权又可以通过用户直接授权。并且权限不仅仅是页面,还要涉及到功能、操作和数据。当然这里简化了数据的授权,只是通过院系来过滤数据,如果要做成通用的数据过滤,那必需要针对不同的功能对不同的数据进行授权管理,整个复杂度提高了很多,我们这个系统暂时不考虑这样的需求。


    1、权限使用apache shiro框架
    
    2、用户 -> 角色 -> 菜单、组件、功能
          用户 -> 菜单、组件、功能
          菜单 = 一个页面
          功能 = 操作(增删改)
          组件 = 一个页面中的一个模块,一个页面可能由多个模块组成
      
    3、菜单、组件、功能统称为资源
          角色授权 :分为已分配资源、未分配资源两种
          用户授权 :分为未设置、可访问资源、禁用资源三种
          用户从角色处继承已分配的资源,再合并自己的可访问资源,并排除禁用资源,最后得到用户的完整授权
      
    4、用户分配部门,这是控制用户可查看的数据,如果未分配任何部门,则默认查看全部数据,否则只可查看分配的部门的数据
    
    5、有三种内置角色,学生-STU,教职工-TEA,系统管理员-ADM,这三种角色不可修改和删除,其它角色可以随便增删改
    
    6、用户分为三类,学生(STU)、教职工(TEA)、管理员(ADM)
          学生数据存于学生表,不会存储到用户表,默认学生有STU角色,无需分配,也不能改变
          教职工存于用户表,在导入和交换教职工数据的时候,如果是新增,则要同时自动创建一个用户,教职工默认有TEA角色,不能更改
          管理员存于用户表,可通过用户管理界面增加和删除,管理员默认没有角色,可通过权限管理功能分配角色
         系统内置帐号admin,属于管理员,默认为系统管理员角色,不可修改
      
    7、对于教职工帐号存于何处,一直有三种考虑
        1) 只存于教职工表
             优点:
                   a、不需要在用户表再维护一份教职工帐号;
                   b、不需要在同步/导入教职工的时候另外执行一段程序来判断是否要增加相应的数据到用户表;
            缺点:
                  a、教职工表需直接关联角色和资源,如果用ID关联,一旦清除教职工数据重新同步,则所有关联信息丢失,如果用工号(gh)关联,
                        可以避免信息丢失,但是工号不是主键,虽然具有唯一性,但是未来被修改的可能性也存在,且工号是业务数据,
                        用来做外键关联不是很好。
                  b、需要修改教职工表,增加密码,是否启用,登录别名等与登录有关的字段,增加教职工表的复杂性            
        2) 存于用户表
            优点:
                 a、教职工和管理员同属用户,与角色权限的关联比较清晰
                 b、不需要修改教职工表
            缺点:
                 a、在同步/导入教职工时需做额外操作,增加了流程复杂度
       3) 存于教职工表,默认是教职工角色,不能对这些用户进行操作,如果要为用户分配更多权限需要新建一个普通用户,这个用户可以独立也可以关联到相应的教职工帐号。
            优点:
                 a、不需要在同步/导入教职工的时候另外执行一段程序来判断是否要增加相应的数据到用户表;
                 b、用户与角色权限的关联单一,和方案2一样
            缺点:
                 a、对于校领导,需要另外创建帐号来分配权限,操作不方便
                 b、如果要禁用某个教职工帐号,需操作教职工表,也就是说需要修改教职工表,增加密码,是否启用等信息
            

        目前使用的是方案3,但现在权衡比较后,决定在新版中使用方案2,这样做最主要的目的是减少对教职工表的破坏,保持用户表和角色权限的关系单一。

        用户登录时,依次检查用户表和学生表,发现用户后即返回验证登录密码。

       1、如果是TEA,则通过用户查找其角色 + 默认的TEA角色,然后找到所有可访问的资源

       2、如果是ADM, 则通过用户查找其角色,然后找到所有可访问的资源

       3、如果是STU, 则查找默认的STU的角色的所有可访问资源

    8、表设计

        表大致上包括:学生表、教职工表、用户表、角色表、菜单表、功能表、操作表、用户角色表、角色菜单表、角色功能表、角色操作表、用户菜单表、用户功能表、用户操作表、用户可查看部门表        

   

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值