服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.packtpub</groupId><artifactId>Zuul</artifactId><version>1.0.0</version><packaging>jar</packaging><name>Zuul</name><description>com.packtpub.Zuul</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zuul</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Camden.SR6</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

application.properties

spring.application.name=api-gateway
server.port=5555zuul.routes.api-b.path=/compute-service/**
zuul.routes.api-b.serviceId=compute-service
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

AccessFilter.java

package com.packtpub.Zuul;import javax.servlet.http.HttpServletRequest;import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggerFactory;import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;public class AccessFilter extends ZuulFilter {@Overridepublic String filterType() {return "pre";}@Overridepublic int filterOrder() {return 0;}@Overridepublic boolean shouldFilter() {return true;}@Overridepublic Object run() {RequestContext ctx = RequestContext.getCurrentContext();HttpServletRequest request = ctx.getRequest();Object accessToken = request.getParameter("accessToken");if(accessToken == null) {ctx.setSendZuulResponse(false);ctx.setResponseStatusCode(401);return null;}return null;}}

ZuulApplication.java

package com.packtpub.Zuul;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;@EnableZuulProxy
@SpringCloudApplication
public class ZuulApplication {public static void main(String[] args) {SpringApplication.run(ZuulApplication.class, args);}@Beanpublic AccessFilter accessFilter() {return new AccessFilter();}
}

转载于:https://www.cnblogs.com/aguncn/p/6686720.html

SPRING CLOUD服务网关之ZUUL相关推荐

  1. Spring Cloud服务网关(Zuul)的配置项sensitiveHeaders

    如果我们在一个服务中添加了Cookie,如下图所示: public static void set(HttpServletResponse response,String name,String va ...

  2. Spring Cloud服务网关 Zuul

    服务网关是在微服务前边设置一道屏障,请求先到服务网关,网关会对请求进行过滤.校验.路由等处理.有了服务网关可以提高微服务的安全性,校验不通过的请求将被拒绝访问. Spring Cloud Zuul是整 ...

  3. Spring Cloud 系列之 Netflix Zuul 服务网关(三)

    本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Netflix Zuul 服务网关(一) Spring Cloud 系列之 Netflix Zuul 服务网关(二) ...

  4. 【Spring Cloud】网关 - Zuul(1.x)

    1. 背景 通过Spring Cloud 和微服务的学习,我们了解到使用Spring Cloud实现微服务的架构基本成型,大致是这样的: 我们使用Spring Cloud Netflix中的Eurek ...

  5. Spring Cloud GatewayAPI网关服务

    一.Gateway 简介 Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和 Project Reactor等技术.Gateway旨在提 ...

  6. Spring Cloud Gateway网关

    Spring Cloud Gateway网关 1. 简介 Spring Cloud Gateway是Spring官网基于Spring 5.0. Spring Boot 2.0.Project Reac ...

  7. Dubbo 3.0 前瞻:重塑 Spring Cloud 服务治理

    作者 | 小马哥 **导读:**Dubbo 社区策划了[Dubbo 云原生之路]系列文章,和大家一起回顾 Apache Dubbo 产品和社区的发展,并展望未来发展.系列文章主要涵盖 Dubbo 技术 ...

  8. Spring Cloud Gateway网关实现短网址生成、解析、转发

    Spring Cloud Gateway网关实现短网址生成.解析.转发 1.概述 2.基础实现 3.路由处理HandlerFunction 4.配置路由 5.测试 1.概述 在一些生成二维码等场景中, ...

  9. spring cloud的网关服务Zuul

    微服务架构讲究系统的高内聚性,即只做该系统该做的事情,而其他的事情可以通过网关去做.spring cloud的zuul可以快速的搭建一个网关系统,其主要功能如下: 当加入了spring cloud的z ...

最新文章

  1. findbugs:may expose internal representation by ret
  2. 南阳5--Binary String Matching(Kmp)
  3. POJ3070 Fibonacci(矩阵快速幂)
  4. pads layout 中 hatch和flood之区别
  5. 树的直径,树的最长路dp思想
  6. python惰性求值效果_让Python中类的属性具有惰性求值的能力
  7. linux 下测速时间分析
  8. 相同MAC地址,相同IP的两天电脑为什么可以同时上网互不影响(转自Nothel的blog)
  9. Cas单点登录的服务器端和客户端的配置
  10. Ubuntu20.04 安装在U盘上
  11. Python调用海康威视网络相机之——python读取相机rtsp码流显示画面
  12. 类似鹅厂的H5农场游戏,牧场游戏 博主亲自搭建
  13. IP地址作用与分类(A类 B类 C类 D类 E类)
  14. 注解缓存@Cacheable、CachePut、CacheEvict、Caching使用及介绍
  15. 【避坑指南】Win7虚拟机中VMwareTools 安装报错问题解决
  16. windows11删除此电脑的6个图标,包括视频、图片、文档、下载、音乐、桌面
  17. 1421 净现值查询
  18. 周鸿祎:无线互联网的垄断形势将更严峻
  19. 西安邮电大学计算机学院系主任,计算机学院邀请西安邮电大学郑东教授和兰州大学金龙教授来校作学术报告...
  20. U盘数据恢复软件哪款好恢复效果好

热门文章

  1. 18岁初中毕业学Java_刚满十八 初中毕业 java自学完了 没学历 该怎么办?
  2. 龙卷风优化软件测试面试题,暑X好物大推荐,最强真无线降噪耳机带你开启夏日解压模式...
  3. 数据可视化|实验八 实现scatterplot关系图
  4. JVM内存结构|本地方法栈和堆
  5. 台式计算机的速度,台式电脑运行速度慢怎么处理
  6. redis存储新闻列表_Redis对象——集合(Set)
  7. python中forward函数的引用_pytorch 调用forward 的具体流程
  8. python 重写断言_历时四年,Dropbox 用 Rust 重写同步引擎核心代码
  9. android 语音通信,Android与PC间的语音通信
  10. 人才管理是什么意思_cms系统是什么意思,国内常用的cms内容管理系统有哪些