权限设计
jboot
# 权限设计
权限的设计中,包含了两部分,分别是
- 1)权限的定义
- 2)权限的分配
# 权限的定义
在 JbootAdmin 系统中,我们可以通过两种方式来定义权限,但是,在定义权限之前,我们需要定义一个权限组,每个权限都应该属于一个权限组,这样我们在后台分配权限的时候,可以方便的找到该权限,或者全选某个权限组的所有权限。
# 定义权限组
定义权限组,我们需要写一个权限组的类,并实现 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() 添加手动维护的权限
}
@Override
public List<PermissionBean> buildPermission() {
return portalPermissions;
}
}
通过注解 @PermissionDef 来实现
例如:
@PermissionDef(title = "账户管理", groupId = AdminPermissionGroups.ACCOUNT)
public void list() {
//xxxx
}
以上的代码定义了一个名称为 “账户管理”
的权限,其归属在权限组的 ID 是 AdminPermissionGroups.ACCOUNT
。
# 权限的分配
通过如上方法定义好权限和权限组后,我们需要进入到后台,在权限构建了进行构建权限,这些权限数据才能自动同步到数据库里去。如下图所示:
权限构建完成后,我们就可以在角色里,为某个角色分配权限了,如下图所示: