权限管理

A、可实现对页面、数据接口,数据脱敏、导入、导出等等管制

B、要使用框架自带的权限管理功能,需要配置redis缓存,在配置完成cache.properties后,在bee.yml通用参数中打开权限校验功能


#权限校验相关配置
auth:
  #开启请求权限校验,默认为false,不开启请求校验
  enable: true
  #缓存分组
  cache: auth

C、实现权限校验所需要的数据bean

Role.java,角色数据


import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnore;

import bee.cloud.core.Bee;
import bee.cloud.engine.db.annotation.TableName;
import bee.cloud.engine.db.core.Cnd;
import bee.cloud.engine.db.core.Table;
import bee.cloud.engine.db.siud.Select;
import lombok.Data;

/**
 * 功能说明:角色表
 *
 * @author 度仙 2022/11/23 11:36
 */
@Data
@TableName(name = "t_role", datasource = "api")
public class Role extends Table implements bee.cloud.auth.Role {
    private String roleId;
    private String roleName;
    private String roleCode;
    private String parentId;
    private String memo;
    private String orgId;
    private String usable;
    private Date createTime;
    private Date updateTime;

    @Override
    public String getId() {
		return roleId;
    }

    @Override
    public String getCode() {
		return roleCode;
    }

    @JsonIgnore
    @Override
    public  T getInfo() {
	return (T) this;
    }

    @JsonIgnore
    @Override
    public  List getResources() {
		Select select = Bee.getSelect(Resource.class);
		select.join(RoleResource.class, "mode").using("resource_id").where("role_id", Cnd.Operator.EQ, roleId);
		List list = select.go();

		List res = new ArrayList<>();
		if (list != null) {
			for (Resource t : list) {
			res.add((T)t);
			}
		}

		return res;
    }
}

Resource.java,资源数据


import bee.cloud.engine.db.annotation.TableName;
import bee.cloud.engine.db.core.Table;
import lombok.Data;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonIgnore;

/**
 * 功能说明:资源表
 *
 * @author 度仙 2022/11/23 11:36
 */
@Data
@TableName(name = "t_resource", datasource = "api")
public class Resource extends Table implements bee.cloud.auth.Resource {
    private String resourceId;
    private String parentId;
    private String resource;
    private String title;
    private Integer type;
    private String accountId;
    private Date createTime;
    private Date updateTime;
    private String memo;

    @JsonIgnore
    @Override
    public String getId() {
		return this.resourceId;
    }

    @JsonIgnore
    @Override
    public String getParentId() {
		return this.parentId;
    }

    @JsonIgnore
    @Override
    public String getCode() {
		return this.resource;
    }

    @JsonIgnore
    @Override
    public String getName() {
		return this.title;
    }

    @JsonIgnore
    @Override
    public Long getMode() {
		// 关联role_resource表查询出来的,需要用此方法获取
		return this.getValueByLong("mode", 0L);
    }

    @JsonIgnore
    @Override
    public  T getInfo() {
		return (T) this;
    }
}

D、在角色与资源进行管理的应用中对权限校验所需要的数据进行初始化,新建java文件(InitAuth.java)


import java.util.List;

import bee.cloud.auth.BeeWriter;
import bee.cloud.auth.Writer;
import bee.cloud.core.Bee;
import bee.cloud.core.db.RequestParam;
import bee.cloud.core.db.work.Sql;
import bee.cloud.engine.util.Const;
import bee.cloud.service.base.work.Work.WInit;
import bee.cloud.service.core.annotation.BInit;
import cn.yyy.account.bean.Resource;

/**
 * 功能说明:初始化权限相关数据
 * 
 * @author 陈祥 2023年12月29日
 *
 */
@BInit(value = 2)//系统启动进进行初始化
public class InitAuth implements WInit {

    private Writer writer = new BeeWriter();

    @Override
    public void go() {
		initResource();
    }

    private void initResource() {
		Sql sql = Bee.getSql();
		RequestParam param = new RequestParam();
		param.put(Const.PAGESIZE, 10000);
		List list = sql.query(Resource.class, param);
		writer.writeResource(list);
    }
}