Merge remote-tracking branch 'base-version/main' into test
This commit is contained in:
@@ -263,6 +263,15 @@ public class DocFileController {
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get-file-token")
|
||||
@Operation(summary = "根据fileId获取文件访问Token")
|
||||
@PreAuthorize("@ss.hasPermission('infra:doc:query')")
|
||||
public CommonResult<String> getFileToken(@RequestParam("fileId") Long fileId) {
|
||||
// 使用service中的公共方法生成文件访问token
|
||||
String fileToken = docFileService.generateFileToken(fileId);
|
||||
return success(fileToken);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取客户端真实IP地址
|
||||
*/
|
||||
|
||||
@@ -169,4 +169,12 @@ public interface DocFileService {
|
||||
*/
|
||||
void restoreDocFileToVersion(Long docFileId, Long versionId);
|
||||
|
||||
/**
|
||||
* 生成文件访问Token
|
||||
*
|
||||
* @param fileId 文件编号
|
||||
* @return JWT token
|
||||
*/
|
||||
String generateFileToken(Long fileId);
|
||||
|
||||
}
|
||||
|
||||
@@ -285,17 +285,7 @@ public class DocFileServiceImpl implements DocFileService {
|
||||
respVO.setFileSize(fileInfo.getSize().longValue());
|
||||
|
||||
// 生成文件访问的JWT token
|
||||
String fileToken = "";
|
||||
if (StrUtil.isNotBlank(onlyOfficeJwtSecret)) {
|
||||
// 创建文件访问token,包含fileId和过期时间(1小时后过期)
|
||||
long expTime = System.currentTimeMillis() / 1000 + 3600; // 1小时后过期
|
||||
fileToken = JWT.create()
|
||||
.setPayload("fileId", doc.getFileId())
|
||||
.setPayload("exp", expTime)
|
||||
.setPayload("iat", System.currentTimeMillis() / 1000)
|
||||
.setKey(onlyOfficeJwtSecret.getBytes())
|
||||
.sign();
|
||||
}
|
||||
String fileToken = generateFileToken(doc.getFileId());
|
||||
|
||||
// 使用新的接口生成文件URL,包含JWT token
|
||||
String fileUrl = StrUtil.removeSuffix(onlyOfficeCallbackBaseUrl, "/") + "/admin-api/infra/doc-file/file-content?fileId=" + doc.getFileId();
|
||||
@@ -422,17 +412,7 @@ public class DocFileServiceImpl implements DocFileService {
|
||||
String fileUrl = "";
|
||||
if (doc.getFileId() != null) {
|
||||
// 生成文件访问的JWT token
|
||||
String fileToken = "";
|
||||
if (StrUtil.isNotBlank(onlyOfficeJwtSecret)) {
|
||||
// 创建文件访问token,包含fileId和过期时间(1小时后过期)
|
||||
long expTime = System.currentTimeMillis() / 1000 + 3600; // 1小时后过期
|
||||
fileToken = JWT.create()
|
||||
.setPayload("fileId", doc.getFileId())
|
||||
.setPayload("exp", expTime)
|
||||
.setPayload("iat", System.currentTimeMillis() / 1000)
|
||||
.setKey(onlyOfficeJwtSecret.getBytes())
|
||||
.sign();
|
||||
}
|
||||
String fileToken = generateFileToken(doc.getFileId());
|
||||
|
||||
// 生成通过新接口访问文件的URL,包含JWT token
|
||||
fileUrl = StrUtil.removeSuffix(onlyOfficeCallbackBaseUrl, "/") + "/admin-api/infra/doc-file/file-content?fileId=" + doc.getFileId();
|
||||
@@ -845,5 +825,21 @@ public class DocFileServiceImpl implements DocFileService {
|
||||
log.info("文档版本恢复完成: docId={}, 恢复到版本={}, 新版本={}",
|
||||
docFileId, version.getVersionNo(), newVersionNo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generateFileToken(Long fileId) {
|
||||
String fileToken = "";
|
||||
if (StrUtil.isNotBlank(onlyOfficeJwtSecret)) {
|
||||
// 创建文件访问token,包含fileId和过期时间(1小时后过期)
|
||||
long expTime = System.currentTimeMillis() / 1000 + 3600; // 1小时后过期
|
||||
fileToken = JWT.create()
|
||||
.setPayload("fileId", fileId)
|
||||
.setPayload("exp", expTime)
|
||||
.setPayload("iat", System.currentTimeMillis() / 1000)
|
||||
.setKey(onlyOfficeJwtSecret.getBytes())
|
||||
.sign();
|
||||
}
|
||||
return fileToken;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user