SpringCloud全局过滤器自定义

一、实现步骤:

  1. 在gateway_service工程编写全局过滤器类GlobalFilter,Ordered
  2. 编写业务逻辑代码
  3. 访问接口测试,加token和不加token。

二、业务逻辑代码

在这里插入图片描述
在这里插入图片描述

package com.william.filters;

import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

/**
 * @author :lijunxuan
 * @date :Created in 2019/7/3  21:38
 * @description :
 * @version: 1.0
 */
@Component//注入Spring容器
public class MyGlobalFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        /**
         * 目标:拦截所有请求,如果请求参数中,
         *  包含token。放行,
         *  如果没有,给用户提示未授权401,未授权
         */
        //获取请求参数
        ServerHttpRequest request = exchange.getRequest();
        //获取参数
        MultiValueMap<String, String> queryParams = request.getQueryParams();
        //获取token值
        String token = queryParams.getFirst("token");
        System.out.println("token"+token);
        if (token==null) {
            //拦截,提示未授权错误,401
            exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
            //拦截结束请求
            return exchange.getResponse().setComplete();
        }
        //放行
        return chain.filter(exchange);//代表放行请求
    }
    /**
     * 当前过滤器的执行顺序:
     * 数字越小,越早执行
     * @return
     */
    @Override
    public int getOrder() {
        return 0;
    }
}

三、访问接口测试,加token和不加token

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值