SpringCloud之Zuul
发布时间:2020-12-15 07:14:37 所属栏目:Java 来源:网络整理
导读:使用SpringCloud Zuul实现网关代理。 一、Maven依赖 dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependencydependency groupIdorg.springframework.boot/groupId artifactIdspr
使用SpringCloud Zuul实现网关代理。 一、Maven依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> 二、编写配置(application.yml)eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8769 spring: application: name: blog-zuul-client zuul: routes: api-a: path: /blog/** serviceId: blog-ribbon-client 三、编写主类package com.springcloud.blog; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; @SpringBootApplication @EnableZuulProxy @EnableEurekaClient @EnableDiscoveryClient public class BlogZuulClientApplication { static void main(String[] args) { SpringApplication.run( BlogZuulClientApplication.,args ); } } 四、编写过滤器package com.springcloud.blog; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; @Component MyFilter extends ZuulFilter { private static Logger log = LoggerFactory.getLogger(MyFilter.); @Override public String filterType() { return "pre"; } @Override int filterOrder() { 0 boolean shouldFilter() { return true Object run() { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); log.info(String.format(%s >>> %sAuthorization); if(accessToken == null) { log.warn(token is empty); ctx.setSendZuulResponse(false); ctx.setResponseStatusCode(401); try { ctx.getResponse().getWriter().write(); }catch (Exception e){} ; } log.info(ok; } } 五、测试第一次请求,不携带token,如图: 第二次请求,携带token,如图: ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |