🐛 修复因缓存功能导致密码文件失效的 BUG

This commit is contained in:
zhaojun1998
2021-02-08 17:46:04 +08:00
parent 537e3e0563
commit e920ab0ec0
2 changed files with 11 additions and 5 deletions

View File

@@ -11,6 +11,7 @@ import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
/**
@@ -50,7 +51,7 @@ public class FileListCacheAspect {
if (enableCache) {
List<FileItemDTO> cacheFileList = zFileCache.get(driveId, path);
if (cacheFileList == null) {
result = (List<FileItemDTO>) point.proceed();
result = Collections.unmodifiableList((List<FileItemDTO>) point.proceed());
zFileCache.put(driveId, path, result);
} else {
result = cacheFileList;

View File

@@ -1,5 +1,6 @@
package im.zhaojun.zfile.controller.home;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import im.zhaojun.zfile.context.DriveContext;
import im.zhaojun.zfile.exception.NotExistFileException;
@@ -27,6 +28,7 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.HttpClientErrorException;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -85,18 +87,21 @@ public class FileController {
AbstractBaseFileService fileService = driveContext.get(driveId);
List<FileItemDTO> fileItemList = fileService.fileList(StringUtils.removeDuplicateSeparator(ZFileConstant.PATH_SEPARATOR + path + ZFileConstant.PATH_SEPARATOR));
// 创建副本, 防止排序和过滤对原数据产生影响
List<FileItemDTO> copyList = new ArrayList<>(fileItemList);
// 校验密码, 如果校验不通过, 则返回错误消息
VerifyResult verifyResult = verifyPassword(fileItemList, driveId, path, password);
VerifyResult verifyResult = verifyPassword(copyList, driveId, path, password);
if (!verifyResult.isPassed()) {
return ResultBean.error(verifyResult.getMsg(), verifyResult.getCode());
}
// 过滤掉驱动器配置的表达式中要隐藏的数据
filterFileList(fileItemList, driveId);
filterFileList(copyList, driveId);
// 按照自然排序
fileItemList.sort(new FileComparator(orderBy, orderDirection));
return ResultBean.successData(fileItemList);
copyList.sort(new FileComparator(orderBy, orderDirection));
return ResultBean.successData(copyList);
}
/**