多租户场景下公用文件的访问

默认情况下资源是租户隔离的,但是在某些多租户场景下,如果一个用户希望可以访问当前租户对象之外的文件资源。例如报表。

首先你需要为文件资源设置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;
    }

}

results matching ""

    No results matching ""