【file】更新文件获取authUrl的实现

pull/3/head
fengshuonan 2020-12-28 13:07:25 +08:00
parent 1fe531d773
commit 1505ab56b9
3 changed files with 9 additions and 16 deletions

View File

@ -181,7 +181,7 @@ public class AliyunFileOperator implements FileOperatorApi {
@Override @Override
public String getFileAuthUrl(String bucketName, String key, Long timeoutMillis) { public String getFileAuthUrl(String bucketName, String key, Long timeoutMillis) {
try { try {
Date expiration = new Date(new Date().getTime() + timeoutMillis); Date expiration = new Date(System.currentTimeMillis() + timeoutMillis);
URL url = ossClient.generatePresignedUrl(bucketName, key, expiration); URL url = ossClient.generatePresignedUrl(bucketName, key, expiration);
return url.toString(); return url.toString();
} catch (OSSException | ClientException e) { } catch (OSSException | ClientException e) {

View File

@ -24,11 +24,11 @@
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<!--jwt模块--> <!--auth模块的api-->
<!--用来给生成带鉴权的url用--> <!--用来获取当前登录用户的token生成file的url-->
<dependency> <dependency>
<groupId>cn.stylefeng.roses</groupId> <groupId>cn.stylefeng.roses</groupId>
<artifactId>jwt-sdk</artifactId> <artifactId>auth-api</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>

View File

@ -4,15 +4,14 @@ import cn.hutool.core.io.FileTypeUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.file.FileOperatorApi; import cn.stylefeng.roses.kernel.file.FileOperatorApi;
import cn.stylefeng.roses.kernel.file.constants.FileConstants; import cn.stylefeng.roses.kernel.file.constants.FileConstants;
import cn.stylefeng.roses.kernel.file.enums.BucketAuthEnum;
import cn.stylefeng.roses.kernel.file.exception.FileException; import cn.stylefeng.roses.kernel.file.exception.FileException;
import cn.stylefeng.roses.kernel.file.exception.enums.FileExceptionEnum; import cn.stylefeng.roses.kernel.file.exception.enums.FileExceptionEnum;
import cn.stylefeng.roses.kernel.file.expander.FileConfigExpander; import cn.stylefeng.roses.kernel.file.expander.FileConfigExpander;
import cn.stylefeng.roses.kernel.file.pojo.props.MinIoProperties; import cn.stylefeng.roses.kernel.file.pojo.props.MinIoProperties;
import cn.stylefeng.roses.kernel.file.enums.BucketAuthEnum;
import cn.stylefeng.roses.kernel.jwt.JwtTokenOperator;
import cn.stylefeng.roses.kernel.jwt.api.pojo.config.JwtConfig;
import io.minio.MinioClient; import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException; import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException; import io.minio.errors.InvalidPortException;
@ -193,17 +192,11 @@ public class MinIoFileOperator implements FileOperatorApi {
@Override @Override
public String getFileAuthUrl(String bucketName, String key, Long timeoutMillis) { public String getFileAuthUrl(String bucketName, String key, Long timeoutMillis) {
// 初始化jwt token的生成工具 // 获取登录用户的token
JwtConfig jwtConfig = new JwtConfig(); String token = LoginContext.me().getToken();
jwtConfig.setJwtSecret(FileConfigExpander.getFileAuthJwtSecret());
jwtConfig.setExpiredSeconds(timeoutMillis / 1000);
JwtTokenOperator jwtTokenOperator = new JwtTokenOperator(jwtConfig);
// 生成token
String token = jwtTokenOperator.generateToken(new HashMap<>());
// 拼接url = “host” + “预览图片的url” + “?token=xxx” // 拼接url = “host” + “预览图片的url” + “?token=xxx”
return FileConfigExpander.getServerDeployHost() + FileConstants.FILE_PREVIEW_URL + "?token=" + token; return FileConfigExpander.getServerDeployHost() + FileConstants.FILE_PREVIEW_URL + "?fileBucket=" + bucketName + "&fileObjectName=" + key + "&token=" + token;
} }