yaobo hace 7 años
padre
commit
bcb56c08f4

+ 4 - 2
pom.xml

@@ -48,10 +48,12 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-data-jpa</artifactId>
 		</dependency>
-<!--		<dependency>
+		<!-- 引入 spring-boot-starter-redis -->
+		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-redis</artifactId>
-		</dependency>-->
+			<version>1.3.2.RELEASE</version>
+		</dependency>
 
 		<!--  springCloud 依赖-->
 		<dependency>

+ 47 - 14
src/main/java/cn/efunbox/audio/plugin/AliStsService.java

@@ -9,6 +9,9 @@ import com.aliyuncs.profile.DefaultProfile;
 import com.aliyuncs.profile.IClientProfile;
 import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
 import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
 
 import java.net.URL;
 import java.util.Date;
@@ -16,12 +19,23 @@ import java.util.Date;
 /**
  * Created by yao on 17-10-10.
  */
-public class AliStsService {
+public class AliStsOssAuth {
+
+    private StringRedisTemplate stringRedisTemplate;
+
+    private String accessKeyIdTemp = null;
+    private String accessKeySecretTemp = null;
+    private String securityTokenTemp = null;
+
+    public AliStsOssAuth(StringRedisTemplate stringRedisTemplate) {
+        this.stringRedisTemplate = stringRedisTemplate;
+    }
+
     // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值
-    public static final String REGION_CN_HANGZHOU = "cn-hangzhou";
+    public final String REGION_CN_HANGZHOU = "cn-hangzhou";
     // 当前 STS API 版本
-    public static final String STS_API_VERSION = "2015-04-01";
-    public static AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret,
+    public final String STS_API_VERSION = "2015-04-01";
+    public AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret,
                                          String roleArn, String roleSessionName, String policy,
                                          ProtocolType protocolType) throws ClientException {
         try {
@@ -44,7 +58,7 @@ public class AliStsService {
         }
     }
 
-    public static void Auth(){
+    public void Auth(){
         // 只有 RAM用户(子账号)才能调用 AssumeRole 接口
         // 阿里云主账号的AccessKeys不能用于发起AssumeRole请求
         // 请首先在RAM控制台创建一个RAM用户,并为这个用户创建AccessKeys
@@ -71,17 +85,34 @@ public class AliStsService {
         // 此处必须为 HTTPS
         ProtocolType protocolType = ProtocolType.HTTPS;
         try {
-            final AssumeRoleResponse response = assumeRole(accessKeyId, accessKeySecret,
-                    roleArn, roleSessionName, policy, protocolType);
+            stringRedisTemplate.opsForValue().set("aaa", "111");
+            System.out.println(stringRedisTemplate.opsForValue().get("aaa"));
+            ValueOperations valueOperations = stringRedisTemplate.opsForValue();
+            if(valueOperations.get("accessKeyIdTemp")!=null
+                    && valueOperations.get("accessKeySecretTemp")!=null
+                    && valueOperations.get("securityTokenTemp")!=null ){
+                accessKeyIdTemp = valueOperations.get("accessKeyIdTemp").toString();
+                accessKeySecretTemp = valueOperations.get("accessKeySecretTemp").toString();
+                securityTokenTemp = valueOperations.get("securityTokenTemp").toString();
+            }else{
+                AssumeRoleResponse response = assumeRole(accessKeyId, accessKeySecret,
+                        roleArn, roleSessionName, policy, protocolType);
+
+                System.out.println("Expiration: " + response.getCredentials().getExpiration());
+                System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId());
+                System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret());
+                System.out.println("Security Token: " + response.getCredentials().getSecurityToken());
+
+                accessKeyIdTemp = response.getCredentials().getAccessKeyId();
+                accessKeySecretTemp = response.getCredentials().getAccessKeySecret();
+                securityTokenTemp = response.getCredentials().getSecurityToken();
 
-            System.out.println("Expiration: " + response.getCredentials().getExpiration());
-            System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId());
-            System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret());
-            System.out.println("Security Token: " + response.getCredentials().getSecurityToken());
+                valueOperations.set("accessKeyIdTemp", accessKeyIdTemp);
+                valueOperations.set("accessKeySecretTemp", accessKeySecretTemp);
+                valueOperations.set("securityTokenTemp", securityTokenTemp);
+            }
 
-            String accessKeyIdTemp = response.getCredentials().getAccessKeyId();
-            String accessKeySecretTemp = response.getCredentials().getAccessKeySecret();
-            String securityTokenTemp = response.getCredentials().getSecurityToken();
+            //原始完整路径:http://efunaudio.oss-cn-beijing.aliyuncs.com/audio/001/00103035/00103035018.mp3
             String endpoint = "oss-cn-beijing.aliyuncs.com";
             OSSClient client = new OSSClient(endpoint, accessKeyIdTemp, accessKeySecretTemp, securityTokenTemp);
             String bucketName = "efunaudio";
@@ -95,6 +126,8 @@ public class AliStsService {
             System.out.println("Failed to get a token.");
             System.out.println("Error code: " + e.getErrCode());
             System.out.println("Error message: " + e.getErrMsg());
+        } catch (Exception e){
+            System.out.println("Error message: " + e.getMessage());
         }
     }
 }

+ 2 - 1
src/main/java/cn/efunbox/audio/plugin/AliStsService.java

@@ -16,7 +16,7 @@ import java.util.Date;
 /**
  * Created by yao on 17-10-10.
  */
-public class AliStsService {
+public class AliStsServiceSample {
     // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值
     public static final String REGION_CN_HANGZHOU = "cn-hangzhou";
     // 当前 STS API 版本
@@ -82,6 +82,7 @@ public class AliStsService {
             String accessKeyIdTemp = response.getCredentials().getAccessKeyId();
             String accessKeySecretTemp = response.getCredentials().getAccessKeySecret();
             String securityTokenTemp = response.getCredentials().getSecurityToken();
+            //原始完整路径:http://efunaudio.oss-cn-beijing.aliyuncs.com/audio/001/00103035/00103035018.mp3
             String endpoint = "oss-cn-beijing.aliyuncs.com";
             OSSClient client = new OSSClient(endpoint, accessKeyIdTemp, accessKeySecretTemp, securityTokenTemp);
             String bucketName = "efunaudio";

+ 29 - 1
src/main/resources/application.properties

@@ -1,3 +1,9 @@
+# 监听端口
+server.port=8081
+
+########################################################
+### MYSQL基本配置;
+########################################################
 #local
 spring.datasource.url=jdbc:mysql://localhost:3306/efunbox_audio?useUnicode=true&characterEncoding=utf-8&characterSetResults=UTF-8&autoReconnect=true&allowMultiQueries=true
 spring.datasource.username=root
@@ -12,4 +18,26 @@ spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 
 spring.jpa.properties.hibernate.hbm2ddl.auto=update
 
-#spring.jpa.show-sql=true
+#spring.jpa.show-sql=true
+
+########################################################
+### REDIS (RedisProperties) redis基本配置;
+########################################################
+# Redis数据库索引(默认为0)
+spring.redis.database=0
+# Redis服务器地址
+spring.redis.host=localhost
+# Redis服务器连接端口
+spring.redis.port=6379
+# Redis服务器连接密码(默认为空)
+spring.redis.password=
+# 连接池最大连接数(使用负值表示没有限制)
+spring.redis.pool.max-active=8
+# 连接池最大阻塞等待时间(使用负值表示没有限制)
+spring.redis.pool.max-wait=-1
+# 连接池中的最大空闲连接
+spring.redis.pool.max-idle=8
+# 连接池中的最小空闲连接
+spring.redis.pool.min-idle=0
+# 连接超时时间(毫秒)
+spring.redis.timeout=0

+ 15 - 5
src/test/java/cn/efunbox/audio/AudioApplicationTests.java

@@ -1,17 +1,17 @@
 package cn.efunbox.audio;
 
 import cn.efunbox.audio.entity.Device;
-import cn.efunbox.audio.plugin.AliStsService;
+import cn.efunbox.audio.plugin.AliStsOssAuth;
+import cn.efunbox.audio.plugin.AliStsServiceSample;
 import cn.efunbox.audio.service.DeviceService;
-import cn.efunbox.audio.util.ApiCode;
+import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
-import java.util.HashMap;
-import java.util.Map;
 import java.util.UUID;
 
 @RunWith(SpringJUnit4ClassRunner.class)
@@ -21,6 +21,9 @@ public class AudioApplicationTests {
 	@Autowired
 	private DeviceService deviceService;
 
+	@Autowired
+	private StringRedisTemplate stringRedisTemplate;
+
 	@Test
 	public void contextLoads() {
 		for(int i=0;i<10;i++){
@@ -42,7 +45,14 @@ public class AudioApplicationTests {
 
 	@Test
 	public void aliAuth(){
-		AliStsService.Auth();
+		// 保存字符串
+		stringRedisTemplate.opsForValue().set("aaa", "111");
+		Assert.assertEquals("111", stringRedisTemplate.opsForValue().get("aaa"));
+		System.out.println(stringRedisTemplate.opsForValue().get("aaa"));
+
+//		AliStsServiceSample.Auth();
+		AliStsOssAuth auth = new AliStsOssAuth(stringRedisTemplate);
+		auth.Auth();
 	}
 
 }