权限

权限的设计中,包含了权限组和权限,我们需要先进行定义,然后再分配。权限类型分为:

1、菜单权限,每个菜单都会对应一个权限,菜单权限通过@MenuDef进行定义。

2、功能权限,每个URL地址可以理解为一个功能,功能权限通过@PermissionDef进行定义。

3、逻辑权限,根据业务要求,通过实现PermissionBuilder来进行定义。

4、敏感数据权限,与逻辑权限一样,只在业务上针对数据更加敏感,某个权限是业务权限还是敏感数据权限,一般通过主观判断决定。

权限的定义

在 SoloAdmin 系统中,我们可以通过两种方式来定义权限,但是,在定义权限之前,我们需要定义一个权限组,每个权限都应该属于一个权限组,这样我们在后台分配权限的时候,可以方便的找到该权限,或者全选某个权限组的所有权限。

定义权限组

定义权限组,我们需要写一个权限组的类,并实现 PermissionGroupBuilder 接口,这个类在项目启动的时候会被自动加载,只要有这个类的存在即可,代码如下:

public class AdminPermissionGroups implements PermissionGroupBuilder {

    public static final String ACCOUNT = "framework:account";

    static List<PermissionGroupBean> permissionGroups = new ArrayList<>();
    static {
        permissionGroups.add(new PermissionGroupBean(ACCOUNT, "账户管理", null, PermissionTypes.ACTION, 111));
    }


    @Override
    public List<PermissionGroupBean> buildPermissionGroups() {
        return permissionGroups;
    }
}

这个代码定义了一个权限组,名称为 “账户管理”,ID 为 framework:account

定义权限

权限的定义分为两种方式:

  • 1) 通过编码实现 PermissionBuilder 接口
  • 2) 通过注解 @PermissionDef 给 Action 进行定义

通过编码进行定义权限

和权限组的定义类似,权限的定义也可以通过实现 PermissionBuilder 接口,并重写方法 buildPermissions() 来实现,例如:

  public class PortalPermissions implements PermissionBuilder {


      static List<PermissionBean> portalPermissions = new ArrayList<>();
      static {
                // 加手动维护的权限
                portalPermissions.add(new PermissionBean("ramework:account:mylogic", "某个逻辑", null, "framework:account", PermissionTypes.LOGIC,1));
            }

      @Override
      public List<PermissionBean> buildPermission() {
          return portalPermissions;
      }
  }

通过注解 @PermissionDef 来实现

例如:

@PermissionDef(name = "我的消息", groupId = AdminPermissionGroups.SYSTEM_MESSAGE)
public void mylist() {
    //xxxx
}

以上的代码定义了一个名称为 “我的消息” 的权限,其归属在权限组的 ID 是 AdminPermissionGroups.SYSTEM_MESSAGE

权限的分配

通过如上方法定义好权限和权限组后,我们需要进入到后台,在权限构建了进行构建权限,这些权限数据才能自动同步到数据库里去。所谓权限构建,就是把在项目定义的权限,一键同步到数据表 sys_permission 和 sys_permission_group 中。如下图所示:

权限构建完成后,我们就可以在角色里,为某个角色分配权限了,如下图所示:

Copyright © SoloAdmin 2020-2021 all right reserved,powered by Gitbook文件修订时间: 2021-06-11 10:30:20

results matching ""

    No results matching ""