Browse Source

服务之间互相调用

yufeng0528 4 years ago
parent
commit
bdf8b9043f

+ 29 - 0
pom.xml

@@ -47,6 +47,15 @@
47 47
                 <type>pom</type>
48 48
                 <scope>import</scope>
49 49
             </dependency>
50
+            <dependencies>
51
+            <dependency>
52
+                <groupId>org.springframework.cloud</groupId>
53
+                <artifactId>spring-cloud-openfeign</artifactId>
54
+                <version>2.0.0.RC2</version>
55
+                <type>pom</type>
56
+                <scope>import</scope>
57
+            </dependency>
58
+        </dependencies>
50 59
         </dependencies>
51 60
     </dependencyManagement>
52 61
     
@@ -61,6 +70,26 @@
61 70
             <groupId>org.springframework.cloud</groupId>
62 71
             <artifactId>spring-cloud-starter</artifactId>
63 72
        </dependency>
73
+       
74
+        <!--注册中心-->
75
+        <dependency>
76
+            <groupId>com.alibaba.cloud</groupId>
77
+            <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
78
+        </dependency>
79
+        
80
+        <!-- Spring Boot Web 依赖 -->
81
+        <dependency>
82
+            <groupId>org.springframework.boot</groupId>
83
+            <artifactId>spring-boot-starter-web</artifactId>
84
+        </dependency>
85
+       
86
+       <!--热加载-->
87
+        <dependency>
88
+            <groupId>org.springframework.boot</groupId>
89
+            <artifactId>spring-boot-devtools</artifactId>
90
+            <scope>runtime</scope>
91
+            <optional>true</optional>
92
+        </dependency>
64 93
 
65 94
 			
66 95
 		<!-- Spring test 依赖 -->

+ 0 - 12
spring5-admin/pom.xml

@@ -16,18 +16,6 @@
16 16
     </parent>
17 17
 
18 18
 	<dependencies>
19
-        <!--注册中心-->
20
-        <dependency>
21
-            <groupId>com.alibaba.cloud</groupId>
22
-            <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
23
-        </dependency>
24
-        
25
-		<!-- Spring Boot Web 依赖 -->
26
-		<dependency>
27
-			<groupId>org.springframework.boot</groupId>
28
-			<artifactId>spring-boot-starter-web</artifactId>
29
-		</dependency>
30
-	
31 19
 		<!-- Spring Boot Redis 依赖 -->
32 20
 		<dependency>
33 21
 			<groupId>org.springframework.boot</groupId>

+ 2 - 1
spring5-admin/src/main/java/com/yaozhitech/spring5/Application.java

@@ -2,8 +2,9 @@ package com.yaozhitech.spring5;
2 2
 
3 3
 import org.springframework.boot.SpringApplication;
4 4
 import org.springframework.boot.autoconfigure.SpringBootApplication;
5
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
5 6
 
6
-
7
+@EnableDiscoveryClient
7 8
 @SpringBootApplication
8 9
 public class Application {
9 10
     public static void main(String[] args) {

+ 1 - 1
spring5-admin/src/main/java/com/yaozhitech/spring5/config/RoleResourceConfiguration.java

@@ -15,7 +15,7 @@ public class RoleResourceConfiguration extends ShiroConfiguration{
15 15
 //    chainDefinition.addPathDefinition("/login", "noSessionCreation,anon");  //login不做认证,noSessionCreation的作用是用户在操作session时会抛异常
16 16
 //    chainDefinition.addPathDefinition("/logout", "noSessionCreation,authcToken[permissive]"); //做用户认证,permissive参数的作用是当token无效时也允许请求访问,不会返回鉴权未通过的错误
17 17
 //    chainDefinition.addPathDefinition("/image/**", "anon"); ,anyRole[admin,manager]
18
-		chainDefinition.addPathDefinition("/**", "noSessionCreation,authcToken"); // 只允许admin或manager角色的用户访问
18
+//		chainDefinition.addPathDefinition("/**", "noSessionCreation,authcToken"); // 只允许admin或manager角色的用户访问
19 19
 //		chainDefinition.addPathDefinition("/article/list", "noSessionCreation,authc");
20 20
 //		chainDefinition.addPathDefinition("/article/*", "noSessionCreation,authc[permissive]");
21 21
 //		chainDefinition.addPathDefinition("/**", "noSessionCreation,authc"); // 默认进行用户鉴权

+ 26 - 0
spring5-auth/README.md

@@ -0,0 +1,26 @@
1
+## 权限服务
2
+
3
+### 概念
4
+1. 认证
5
+2. 授权
6
+3. 鉴权
7
+
8
+### 方案比较
9
+1. oauth2.0
10
+2. JWT
11
+3. 共享session
12
+
13
+### JWT的优缺点
14
+1. 优点:仅通过token就能校验,不需要额外资源。还能附带额外信息
15
+2. 缺点:token过期时间刷新的问题
16
+3. 
17
+
18
+### 架构
19
+1. 权限放在微服务做统一认证
20
+2. 各个微服务之间的认证? [https://gitee.com/geek_qi/cloud-platform](https://gitee.com/geek_qi/cloud-platform)
21
+3. 与gateway结合
22
+
23
+### TODO
24
+1. 权限校验代码 [https://github.com/Nepxion](https://github.com/Nepxion)
25
+2. 注解自动生成权限
26
+3. 

+ 15 - 0
spring5-order/pom.xml

@@ -29,6 +29,21 @@
29 29
 			<artifactId>spring-boot-starter-data-redis</artifactId>
30 30
 		</dependency>
31 31
 		
32
+		<!-- openfeign -->
33
+		<dependency>
34
+            <groupId>org.springframework.cloud</groupId>
35
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
36
+        </dependency>
37
+        <dependency>
38
+            <groupId>io.github.openfeign</groupId>
39
+            <artifactId>feign-okhttp</artifactId>
40
+        </dependency>
41
+        
42
+<!--         <dependency> -->
43
+<!--             <groupId>org.springframework.cloud</groupId> -->
44
+<!--             <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> -->
45
+<!--         </dependency> -->
46
+		
32 47
 <!-- 		<dependency> -->
33 48
 <!--             <groupId>com.alicp.jetcache</groupId> -->
34 49
 <!--             <artifactId>jetcache-starter-redis</artifactId> -->

+ 0 - 12
spring5-order/src/main/java/com/yaozhitech/spring5/Application.java

@@ -1,12 +0,0 @@
1
-package com.yaozhitech.spring5;
2
-
3
-import org.springframework.boot.SpringApplication;
4
-import org.springframework.boot.autoconfigure.SpringBootApplication;
5
-
6
-
7
-@SpringBootApplication
8
-public class Application {
9
-    public static void main(String[] args) {
10
-        SpringApplication.run(Application.class, args);
11
-    }
12
-}

+ 16 - 0
spring5-order/src/main/java/com/yaozhitech/spring5/OrderApplication.java

@@ -0,0 +1,16 @@
1
+package com.yaozhitech.spring5;
2
+
3
+import org.springframework.boot.SpringApplication;
4
+import org.springframework.boot.autoconfigure.SpringBootApplication;
5
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6
+import org.springframework.cloud.openfeign.EnableFeignClients;
7
+
8
+
9
+@EnableDiscoveryClient
10
+@EnableFeignClients
11
+@SpringBootApplication
12
+public class OrderApplication {
13
+    public static void main(String[] args) {
14
+        SpringApplication.run(OrderApplication.class, args);
15
+    }
16
+}

+ 7 - 1
spring5-order/src/main/java/com/yaozhitech/spring5/controller/OrderController.java

@@ -1,17 +1,23 @@
1 1
 package com.yaozhitech.spring5.controller;
2 2
 
3
+import org.springframework.beans.factory.annotation.Autowired;
3 4
 import org.springframework.http.ResponseEntity;
4 5
 import org.springframework.web.bind.annotation.GetMapping;
5 6
 import org.springframework.web.bind.annotation.PathVariable;
6 7
 import org.springframework.web.bind.annotation.RequestMapping;
7 8
 import org.springframework.web.bind.annotation.RestController;
8 9
 
10
+import com.yaozhitech.spring5.provider.AdminProvider;
11
+
9 12
 @RestController
10 13
 @RequestMapping("/order")
11 14
 public class OrderController {
15
+	
16
+	@Autowired
17
+	private AdminProvider adminProvider;
12 18
 
13 19
 	@GetMapping("/{id}")
14 20
 	public ResponseEntity<String> read(@PathVariable Long id) {
15
-		return ResponseEntity.ok("ok");
21
+		return ResponseEntity.ok(adminProvider.admin(id));
16 22
 	}
17 23
 }

+ 14 - 0
spring5-order/src/main/java/com/yaozhitech/spring5/provider/AdminProvider.java

@@ -0,0 +1,14 @@
1
+package com.yaozhitech.spring5.provider;
2
+
3
+import javax.websocket.server.PathParam;
4
+
5
+import org.springframework.cloud.openfeign.FeignClient;
6
+import org.springframework.web.bind.annotation.GetMapping;
7
+import org.springframework.web.bind.annotation.PathVariable;
8
+
9
+@FeignClient(name = "admin")
10
+public interface AdminProvider {
11
+
12
+	@GetMapping(value = "/admin/{id}")
13
+    String admin(@PathVariable("id") Long id);
14
+}

+ 0 - 3
spring5-order/src/main/resources/application.yml

@@ -1,6 +1,3 @@
1
-server:
2
-  port: 8752
3
-
4 1
 logging:
5 2
   level:
6 3
     root: INFO

+ 12 - 0
spring5-order/src/main/resources/bootstrap.yml

@@ -0,0 +1,12 @@
1
+server:
2
+  port: ${SERVER_PORT:8753}
3
+spring:
4
+  application:
5
+    name: order
6
+  cloud:
7
+    nacos:
8
+      discovery:
9
+        server-addr: ${REGISTER_HOST:192.168.99.100}:${REGISTER_PORT:8848}
10
+      config:
11
+        server-addr: ${REGISTER_HOST:192.168.99.100}:${REGISTER_PORT:8848}
12
+        file-extension: yml