SpringCloud学习笔记(19)----Spring Cloud Netflix之服务网关Zuul自定义过滤器

本文介绍如何使用Zuul实现服务网关功能,包括自定义过滤器进行服务验证,具体演示了如何检验请求头部的token,并在不符合条件时返回错误信息。

zuul不仅只是路由,还可以自定义过滤器来实现服务验证。

  实现案例:自定义过滤器,检验头部是否带有token,如果token=wangx,则通过校验,若不存在或不为wangx则返回提示token错误。

  扩展:一般情况下,可以采用JWT规范来做token的校验。

  JWT:https://jwt.io/

1. 自定义过滤器

 
package com.wangx.cloud.springcloud04zuul.filter;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class MyFilter extends ZuulFilter { @Override public String filterType() { return "pre"; } @Override public int filterOrder() { return 1; } @Override public boolean shouldFilter() { return true; } @Override public Object run() throws ZuulException { //获取requestContext实例 RequestContext requestContext = RequestContext.getCurrentContext(); //获取到request对象 HttpServletRequest request = requestContext.getRequest(); //获取response对象  HttpServletResponse response = requestContext.getResponse(); // 判断token是否为wangx, 1 继续往下执行,否则打印token error if (!"wangx".equals(request.getHeader("token"))) { try { //输出流中写入错误信息 PrintWriter printWriter = response.getWriter(); printWriter.write("token is error"); printWriter.flush(); printWriter.close(); } catch (IOException e) { e.printStackTrace(); } } System.out.println("请求路径为:---" + request.getRequestURI()); return null; } }
 

2. 注册自定义的过滤器

 @Bean
    public MyFilter myFilter() {
        return new MyFilter(); }

3. 测试

  使用postman访问:http://localhost:9876/spring-cloud-consumer/user/1

  

 

 

原文 SpringCloud学习笔记(19)----Spring Cloud Netflix之服务网关Zuul自定义过滤器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值