加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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,如图:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读