Spring Cloud Zuul网关配置启动,拦截器,JWT如何实现在网关中拦截没有token的请求,笔记

Zuul一个网关插件
作用:

  • 每个服务都可以被外界单独访问,所以我们就需要把所有的服务端口给隐藏,对外只提供一个统一访问的地址,
  • 对内代理每个服务的路由,派发给某些服务

怎么使用Zuul 先导入zuul的依赖:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>

导入zuul的依赖后
我们在配置文件中进行相关配置
启动类添加注解
在这里插入图片描述

  • @EnableZuulProxy声明启用zuul代理
  • @EnableEurekaClient开启服务注册发现功能。

在这里插入图片描述

  • 在把USER服务添加到网关里面
  • http://localhost:19000/user/chaxun
  • 然后我们就可以通过网关的端口来对用户服务进行访问了

Zuul的过滤器

ZuulFilter
在这里插入图片描述

  • 那么我们怎么使用Zuul给我们提供的过滤器呢?
  • 写一个子类过滤器来继承ZuulFilter给我们提供的过滤方法和相关配置
package com.example.s83790cloudzuul.filter;

import com.netflix.zuul.*;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;

/**
 * @author XiaoLiu
 * @date 2021-11-02 08:24
 **/
@Component
public class CustomZuulFilter extends ZuulFilter
{
   
   

    @Override
    public String filterType()
    {
   
   
         //过滤器的类型
        // 1)pre
        //可以在请求被路由之前调用。适用于身份认证的场景,认证通过后再继续执行下面的流程。
        //2)route
        //在路由请求时被调用。适用于灰度发布场景,在将要路由的时候可以做一些自定义的逻辑。
        //3)post
        //在 route 和 error 过滤器之后被调用。这种过滤器将请求路由到达具体的服务之后执行。适用于需要添加响应头,记录响应日志等应用场景。
        //4)error
        //处理请求时发生错误时被调用。在执行过程中发送错误时会进入 error 过滤器,可以用来统一记录错误信息。
        return "pre";
    }

    @Override
    public int filterOrder()
    {
   
   
        //此过滤器的优先级,0的优先级是最高,其他逐渐次知
        return 0;
    }

    @Override
    public boolean shouldFilter()

    {
   
   
        //是否开启过滤,开启true 关闭 false
        RequestContext requestContext = RequestContext.getCurrentContext();
        HttpServletRequest request = requestContext.getRequest();//获取当此被拦截的请求
        String requestURI = String.valueOf(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值