多租户场景下公用文件的访问
默认情况下资源是租户隔离的,但是在某些多租户场景下,如果一个用户希望可以访问当前租户对象之外的文件资源。例如报表。
首先你需要为文件资源设置CODE。之后相关的系统接口通过CODE访问对应的资源。
关于FileLoader接口
当我们通过CODE访问文件资源的时候,BaskServer是通过FileLoader获取对应的文件对象的。
我们可以利用基于SPI技术的FileLoader接口,返回公用租户对象下的文件资源。
package com.basksoft.core.database.service.file;
import com.basksoft.core.database.model.BaskFile;
import com.basksoft.core.security.entity.User;
public interface FileLoader {
public BaskFile getBaskFile(User loginUser, String tenantId, String code);
}
参考实现
import com.basksoft.core.database.manager.file.FileManager;
import com.basksoft.core.database.model.BaskFile;
import com.basksoft.core.database.service.file.FileLoader;
import com.basksoft.core.security.entity.User;
public class DefaultFileLoader implements FileLoader {
@Override
public BaskFile getBaskFile(User loginUser, String tenantId, String code) {
BaskFile currentBaskFile = FileManager.ins.loadFile(tenantId, code);
if (currentBaskFile!=null) {
return currentBaskFile;
} else {
//获取公用租户下的文件对象
currentBaskFile = FileManager.ins.loadFile("TENANT_COMMON", code);
}
return currentBaskFile;
}
}