mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-21 02:25:56 +08:00
update 优化 oss桶权限
This commit is contained in:
parent
a9c88d0641
commit
82ade0a045
@ -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) {
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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 '是否https(Y=是,N=否)',
|
is_https char(1) default 'N' comment '是否https(Y=是,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);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user