update 优化 oss桶权限

This commit is contained in:
chenchen 2022-10-24 22:06:21 +08:00
parent a9c88d0641
commit 82ade0a045
5 changed files with 31 additions and 18 deletions

View File

@ -17,6 +17,7 @@ import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.constant.OssConstant;
import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.entity.UploadResult;
import com.ruoyi.oss.enumd.AccessPolicyType;
import com.ruoyi.oss.enumd.PolicyType; import com.ruoyi.oss.enumd.PolicyType;
import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.exception.OssException;
import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.properties.OssProperties;
@ -24,7 +25,7 @@ import com.ruoyi.oss.properties.OssProperties;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.time.Instant; import java.util.Arrays;
import java.util.Date; import java.util.Date;
/** /**
@ -83,7 +84,7 @@ public class OssClient {
return; return;
} }
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead); createBucketRequest.setCannedAcl(AccessPolicyType.PUBLIC.getAcl());
client.createBucket(createBucketRequest); client.createBucket(createBucketRequest);
client.setBucketPolicy(bucketName, getPolicy(bucketName, PolicyType.READ)); client.setBucketPolicy(bucketName, getPolicy(bucketName, PolicyType.READ));
} catch (Exception e) { } catch (Exception e) {
@ -102,7 +103,7 @@ public class OssClient {
metadata.setContentLength(inputStream.available()); metadata.setContentLength(inputStream.available());
PutObjectRequest putObjectRequest = new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata); PutObjectRequest putObjectRequest = new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata);
// 设置上传对象的 Acl 为公共读 // 设置上传对象的 Acl 为公共读
putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); putObjectRequest.setCannedAcl(AccessPolicyType.PUBLIC.getAcl());
client.putObject(putObjectRequest); client.putObject(putObjectRequest);
} catch (Exception e) { } catch (Exception e) {
throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]"); throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]");
@ -185,8 +186,10 @@ public class OssClient {
* *
* @return 当前桶权限类型code * @return 当前桶权限类型code
*/ */
public String getAccessPolicy() { public AccessPolicyType getAccessPolicy() {
return properties.getAccessPolicy(); return Arrays.stream(AccessPolicyType.values())
.filter(n->StringUtils.equals(n.getType(),properties.getAccessPolicy()))
.findFirst().get();
} }
private static String getPolicy(String bucketName, PolicyType policyType) { private static String getPolicy(String bucketName, PolicyType policyType) {

View File

@ -1,5 +1,6 @@
package com.ruoyi.oss.enumd; package com.ruoyi.oss.enumd;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@ -15,21 +16,26 @@ public enum AccessPolicyType {
/** /**
* private * private
*/ */
PRIVATE("0"), PRIVATE("0", CannedAccessControlList.Private),
/** /**
* public * public
*/ */
PUBLIC("1"), PUBLIC("1", CannedAccessControlList.PublicRead),
/** /**
* constum * constum
*/ */
CONSTUM("2"); CONSTUM("2",CannedAccessControlList.PublicRead);
/** /**
* 类型 * 权限类型
*/ */
private final String type; private final String type;
/**
* 文件对象 权限类型
*/
private final CannedAccessControlList acl;
} }

View File

@ -137,7 +137,7 @@ public class SysOssServiceImpl implements ISysOssService {
oss.setService(storage.getConfigKey()); oss.setService(storage.getConfigKey());
baseMapper.insert(oss); baseMapper.insert(oss);
SysOssVo sysOssVo = new SysOssVo(); SysOssVo sysOssVo = new SysOssVo();
BeanCopyUtils.copy(oss,sysOssVo); BeanCopyUtils.copy(oss, sysOssVo);
return this.matchingUrl(sysOssVo); return this.matchingUrl(sysOssVo);
} }
@ -163,9 +163,9 @@ public class SysOssServiceImpl implements ISysOssService {
private SysOssVo matchingUrl(SysOssVo oss) { private SysOssVo matchingUrl(SysOssVo oss) {
OssClient storage = OssFactory.instance(oss.getService()); OssClient storage = OssFactory.instance(oss.getService());
/** /**
* 仅修改桶类型为 private url * 仅修改桶类型为 private URL临时URL时长为100s
*/ */
if (StringUtils.equals(AccessPolicyType.PRIVATE.getType(), storage.getAccessPolicy())) { if (AccessPolicyType.PRIVATE == storage.getAccessPolicy()) {
oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 100)); oss.setUrl(storage.getPrivateUrl(oss.getFileName(), 100));
} }
return oss; return oss;

View File

@ -282,6 +282,9 @@ export default {
trigger: "blur", trigger: "blur",
}, },
], ],
accessPolicy:[
{ required: true, message: "accessPolicy不能为空", trigger: "blur" }
]
}, },
}; };
}, },
@ -315,6 +318,7 @@ export default {
endpoint: undefined, endpoint: undefined,
domain: undefined, domain: undefined,
isHttps: "N", isHttps: "N",
accessPolicy: "1",
region: undefined, region: undefined,
status: "1", status: "1",
remark: undefined, remark: undefined,

View File

@ -674,7 +674,7 @@ create table sys_oss_config (
domain varchar(255) default '' comment '自定义域名', domain varchar(255) default '' comment '自定义域名',
is_https char(1) default 'N' comment '是否httpsY=是,N=否)', is_https char(1) default 'N' comment '是否httpsY=是,N=否)',
region varchar(255) default '' comment '', region varchar(255) default '' comment '',
access_policy char(1) not null default '1' comment '桶权限类型(0=private 1=public 2=custom)', access_policy char(1) not null default '1' comment '桶权限类型(0=private 1=public 2=custom)',
status char(1) default '1' comment '状态0=正常,1=停用)', status char(1) default '1' comment '状态0=正常,1=停用)',
ext1 varchar(255) default '' comment '扩展字段', ext1 varchar(255) default '' comment '扩展字段',
create_by varchar(64) default '' comment '创建者', create_by varchar(64) default '' comment '创建者',
@ -685,8 +685,8 @@ create table sys_oss_config (
primary key (oss_config_id) primary key (oss_config_id)
) engine=innodb comment='对象存储配置表'; ) engine=innodb comment='对象存储配置表';
insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', '127.0.0.1:9000', '','N', '', '0', '', 'admin', sysdate(), 'admin', sysdate(), NULL, 1); insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', '127.0.0.1:9000', '','N', '', '1' ,'0', '', 'admin', sysdate(), 'admin', sysdate(), NULL);
insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '','N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL, 1); insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '','N', '', '1' ,'1', '', 'admin', sysdate(), 'admin', sysdate(), NULL);
insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '','N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL, 1); insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '','N', '', '1' ,'1', '', 'admin', sysdate(), 'admin', sysdate(), NULL);
insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL, 1); insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1' ,'1', '', 'admin', sysdate(), 'admin', sysdate(), NULL);
insert into sys_oss_config values (5, 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '','N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL, 1); insert into sys_oss_config values (5, 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '','N', '', '1' ,'1', '', 'admin', sysdate(), 'admin', sysdate(), NULL);