我使用的是Spring云API网关,它验证jwt令牌,然后进一步让任何请求通过。对应的yml如下。
server:
port: 9000
spring:
application:
name: API-GATEWAY
cloud:
gateway:
routes:
- id: EMPLOYEE-SERVICE
uri:
lb://EMPLOYEE-SERVICE
predicates:
- Path=/employee/**
- Method=GET,POST,PUT,DELETE
filters:
- RemoveRequestHeader=Cookie
- AuthorizationHeaderFilter
- id: USER-SERVICE
uri:
lb://USER-SERVICE
predicates:
- Path=/api/auth/**
- Method=POST
- id: RATING-SERVICE
uri:
lb://RATING-SERVICE
predicates:
- Path=/ratingsdata/**
filters:
- RemoveRequestHeader=Cookie
- AuthorizationHeaderFilter
eureka:
instance:
hostname: localhost
client:
register-with-eureka: true
fetch-registry: true
service-url:
default-zone: http://localhost:9761/eureka
我正在使用伪客户端从EMPLOYEE-SERVICE调用RATING-SERVICE。现在,如果任何其他微服务(例如EMPLOYEE-SERVICE)向RATING-SERVICE发出任何请求,也应该使用jwt令牌进行验证。我尝试了以下代码,但它不起作用。
@Autowired
private RatingService ratingService;
Double empRating = ratingService.getRating(employee.getManagerPoints(), employee.getPeersPoints(), employee.getDepartment().getDeptName());
@FeignClient(name = "RATING-SERVICE", url="http://localhost:9000")
public interface RatingService {
@GetMapping("/ratingsdata/{managerInput}/{peerInput}/{dept}")
Double getRating(@PathVariable Double managerInput, @PathVariable Double peerInput,
@PathVariable String dept);
}
1条答案
按热度按时间mpbci0fu1#
虽然这里没有真正的问题,但我会回答!你没有通过网关路由呼叫的代码或过程(这是我正在寻找的)。
一旦原始请求通过网关到达第一个服务(Employee-service),第二个调用(到达rating-service)**就不会通过网关;OpenFeign查找您调用的服务并直接发出请求,因此它没有被授权。