|
@@ -1,6 +1,7 @@
|
|
|
package cn.reghao.oss.store.controller;
|
|
package cn.reghao.oss.store.controller;
|
|
|
|
|
|
|
|
import cn.reghao.oss.api.constant.ChannelAction;
|
|
import cn.reghao.oss.api.constant.ChannelAction;
|
|
|
|
|
+import cn.reghao.oss.store.config.OssProperties;
|
|
|
import cn.reghao.oss.store.service.GetObjectService;
|
|
import cn.reghao.oss.store.service.GetObjectService;
|
|
|
import cn.reghao.oss.store.util.JwtUtil;
|
|
import cn.reghao.oss.store.util.JwtUtil;
|
|
|
import cn.reghao.oss.store.util.ObjectUtil;
|
|
import cn.reghao.oss.store.util.ObjectUtil;
|
|
@@ -23,10 +24,12 @@ import java.util.concurrent.TimeUnit;
|
|
|
public class ObjectGetController {
|
|
public class ObjectGetController {
|
|
|
private final GetObjectService getObjectService;
|
|
private final GetObjectService getObjectService;
|
|
|
private final Cache<String, String> cache;
|
|
private final Cache<String, String> cache;
|
|
|
|
|
+ private final OssProperties ossProperties;
|
|
|
|
|
|
|
|
- public ObjectGetController(GetObjectService getObjectService) {
|
|
|
|
|
|
|
+ public ObjectGetController(GetObjectService getObjectService, OssProperties ossProperties) {
|
|
|
this.getObjectService = getObjectService;
|
|
this.getObjectService = getObjectService;
|
|
|
this.cache = Caffeine.newBuilder().maximumSize(10_000).expireAfterAccess(1, TimeUnit.HOURS).build();
|
|
this.cache = Caffeine.newBuilder().maximumSize(10_000).expireAfterAccess(1, TimeUnit.HOURS).build();
|
|
|
|
|
+ this.ossProperties = ossProperties;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@RequestMapping(value = "/**", method = RequestMethod.HEAD)
|
|
@RequestMapping(value = "/**", method = RequestMethod.HEAD)
|
|
@@ -59,10 +62,10 @@ public class ObjectGetController {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
String queryString = String.format("token=%s&t=%s&nonce=%s", token, timestamp, nonce);
|
|
String queryString = String.format("token=%s&t=%s&nonce=%s", token, timestamp, nonce);
|
|
|
- String url = String.format("%s/%s", "//oss.reghao.cn", objectName);
|
|
|
|
|
|
|
+ String domain = ossProperties.getDomain();
|
|
|
|
|
+ String url = String.format("//%s/%s", domain, objectName);
|
|
|
String requestString = String.format("%s%s?%s", "GET", url, queryString);
|
|
String requestString = String.format("%s%s?%s", "GET", url, queryString);
|
|
|
- String secretKey = "oss.reghao.cn";
|
|
|
|
|
- boolean valid = SignatureUtil.valid(requestString, secretKey, sign);
|
|
|
|
|
|
|
+ boolean valid = SignatureUtil.valid(requestString, ossProperties.getSecretKey(), sign);
|
|
|
if (!valid) {
|
|
if (!valid) {
|
|
|
getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN);
|
|
getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN);
|
|
|
return;
|
|
return;
|
|
@@ -82,7 +85,7 @@ public class ObjectGetController {
|
|
|
return;
|
|
return;
|
|
|
}*/
|
|
}*/
|
|
|
|
|
|
|
|
- OssPayload ossPayload = JwtUtil.getOssPayload(token);
|
|
|
|
|
|
|
+ OssPayload ossPayload = JwtUtil.getOssPayload(token, ossProperties.getSecretKey());
|
|
|
int channelId = ossPayload.getChannelId();
|
|
int channelId = ossPayload.getChannelId();
|
|
|
long userId = ossPayload.getUserId();
|
|
long userId = ossPayload.getUserId();
|
|
|
String prefix = UploadChannel.getUploadChannel(channelId).getPrefix();
|
|
String prefix = UploadChannel.getUploadChannel(channelId).getPrefix();
|