Prechádzať zdrojové kódy

自动根据url路径检测并开始oss授权

yaobo 7 rokov pred
rodič
commit
53f9358fc0

+ 9 - 2
src/main/java/cn/efunbox/audio/controller/AudioController.java

@@ -4,6 +4,7 @@ import cn.efunbox.audio.clients.AudioHttp;
 import cn.efunbox.audio.consts.MediaType;
 import cn.efunbox.audio.consts.Status;
 import cn.efunbox.audio.entity.*;
+import cn.efunbox.audio.plugin.AliStsOssAuth;
 import cn.efunbox.audio.service.*;
 import cn.efunbox.audio.utils.ApiCode;
 import cn.efunbox.audio.utils.HttpUtil;
@@ -50,6 +51,9 @@ public class AudioController {
     AdminService adminService;
     @Autowired
     TrailService trailService;
+    @Autowired
+    private AliStsOssAuth aliStsOssAuth;
+
 
     /**
      * 管理员搜索接口
@@ -222,13 +226,13 @@ public class AudioController {
             try{
                 if(map.get("code").toString().equalsIgnoreCase("200")){
                     map = JSONObject.parseObject(map.get("data").toString());
-                    if(map.get("type").toString().equalsIgnoreCase("1")){
+                    if(map.get("type").toString().equalsIgnoreCase("1")){       //音频
                         JSONArray array = JSONArray.parseArray(map.get("audios").toString());
                         map = JSONObject.parseObject(array.get(0).toString());
                         String path = map.get("fullPath").toString();
                         path = path.replaceAll("\n","");
                         audio.setUrl(path);
-                    }else if(map.get("type").toString().equalsIgnoreCase("0")){
+                    }else if(map.get("type").toString().equalsIgnoreCase("0")){ //视频
                         JSONArray array = JSONArray.parseArray(map.get("videos").toString());
                         map = JSONObject.parseObject(array.get(0).toString());
                         String path = map.get("fullPath").toString();
@@ -261,6 +265,9 @@ public class AudioController {
         record.setCreated(new Timestamp(new Date().getTime()));
         recordService.Insert(record);
 
+        //阿里oss临时授权
+        audio.setUrl(aliStsOssAuth.AuthUrl(audio.getUrl()));
+
         HttpUtil.responseOkData(request, response, audio);
         return;
     }

+ 4 - 1
src/main/java/cn/efunbox/audio/plugin/AliStsOssAuth.java

@@ -32,6 +32,9 @@ public class AliStsOssAuth {
     //是否开启oss资源的临时授权
     @Value("${oss.auth.enable}")
     private int auth_enable;
+    //当oss的url中含有以下keyword将进行临时授权
+    @Value("${oss.auth.keyword}")
+    private String auth_keyword;
     // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值
     @Value("${oss.auth.REGION_CN_HANGZHOU}")
     private String REGION_CN_HANGZHOU;
@@ -127,7 +130,7 @@ public class AliStsOssAuth {
      * @return
      */
     public String AuthUrl(String url){
-        if(auth_enable<1){
+        if(auth_enable<1 || url.indexOf(auth_keyword)<0){
             return url;
         }
         String[] arr = url.split(endpoint+"/");

+ 2 - 0
src/main/resources/application.properties

@@ -9,6 +9,8 @@ spring.profiles.active=dev
 ########################################################
 #是否开启鉴权加密,1为是,0位否
 oss.auth.enable = 1
+#当oss的url中含有以下keyword将进行临时授权
+oss.auth.keyword = auth
 #目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值
 oss.auth.REGION_CN_HANGZHOU = cn-hangzhou
 #当前 STS API 版本