权限控制

一、功能权限(包括按钮权限、报表权限)

功能权限包括三部分:
(1)模块的CRUD,导出、统计、批量导入、批量修改等
(2)模块的自定义按钮
(3)SQL报表:每一个报表有查看和导出权限
可在后台为不同的角色分配不同的功能权限。

登录图片

二、纵向:字段权限

(1)开启字段权限,配置文件:

/dodo/src/main/java/com/gentools/dodo_generate_config.properties

# 配置开启字段权限
dodo.generate.field.considerright=true

(2)生成数据和代码

  执行main方法,生成数据
  src/main/java/com/gentools/Step_2_MakeBaseData.java
 执行main方法,生成代码
 src/main/java/com/gentools/Step_4_GenerateCode.java

(3)后台为不同角色分配不同的字段权限 登录图片

三、横向:行级权限

通过 @DodoRowRight 注解来实现,有四种用法
假如有个POJO:Organization(组织机构)
假如有个POJO:OrgPerson(组织机构下的人员)

(1)限制只能访问归属于自己的组织机构数据

    //(1)在 Organization 中添加字段
    @DodoField(sortSeq = 1, name = "管理员", isAdmin = true)
    private Admin             orgAdmin;

    //(2)在 Organization 上添加注解
    @DodoRowRight(entityProperty = "orgAdmin")

    //(3)生成代码

(2)限制只能访问自己所属的组织机构

    //(1)在 Admin 中添加字段
    @DodoField(sortSeq = 1, name = "管理员组织")
    private Organization             adminOrg;

    //(2)在 Organization 上添加注解
    @DodoRowRight(entityProperty = "this", principalKey = "myOrg")

    //(3)生成代码

(3)限制只能访问自己组织下的人员

    //(1)在 Admin 中添加字段
    @DodoField(sortSeq = 1, name = "管理员组织")
    private Organization             adminOrg;

    //(2)在 OrgPerson 中添加字段
    @DodoField(sortSeq = 1, name = "归属组织")
    private Organization ownOrg;

    //(3)在 OrgPerson 上添加注解
    @DodoRowRight(entityProperty = "ownOrg", principalKey = "adminOrg")

    //(4)生成代码

(4)限制只能访问级别为2和3的组织信息

    //(1)在 Organization 中添加字段
    @DodoField(sortSeq = 1, name = "组织级别")
    private Integer orgLevel;
    //(2)在 Organization 上添加注解
    @DodoRowRight(entityProperty = "orgLevel", principalKey = "checkOrgLevel", principalKeyShowName = "可访问的组织级别")
    //(3)生成代码
    //(4)添加或者编辑角色信息,在`扩展属性`里找到字段:`可访问的组织级别` 进行编辑,填入:`2,3` 即可完成限制

四、权限动态更新

以下五种情况下,会动态更新系统元数据、当前登录的管理员的权限信息 无需重启系统或者退出重新登录。

(1)SQL报表添加、编辑
(2)管理员编辑
(3)角色编辑
(4)权限增加、删除、修改
(5)菜单增加、删除、修改
Copyright © DodoFramework 2020 all right reservedModify At: 2020-10-28 00:13:36