十八、服务网关-Zuul 如何对过滤器进行自定义

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

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

拓展:一般情况下,可以采用 JWT 规范来做 token 的校验 JWT:https://jwt.io/

1、自定义过滤器

package com.drunck.education.custom; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.springframework.util.ReflectionUtils; 

import com.netflix.zuul.ZuulFilter; 
import com.netflix.zuul.context.RequestContext; 

public class CustomPreFilter extends ZuulFilter { 

@Override  
public String filterType() {   
} 

@Override  
public int filterOrder() {   
return 1;  
} 

@Override  
public boolean shouldFilter() {   
return true;  
}

@Override  
public Object run() {   
RequestContext ctx = RequestContext.getCurrentContext();   HttpServletRequest request = ctx.getRequest();   
String token = request.getHeader("token");   
if (!"drunck".equals(token)) {    
HttpServletResponse response = ctx.getResponse();    
try {     
PrintWriter writer = response.getWriter();     writer.println("token is error");     
writer.close();    
} catch (IOException e) {     ReflectionUtils.rethrowRuntimeException(e);    
}   
} 

System.out.println("请求路径为:" + request.getRequestURI());   return null;  
}  
} 

2、注册自定义的过滤器

@Bean  public CustomPreFilter sessionPreFilter() {   
return new CustomPreFilter();  
} 

3、测试,使用 post man
访问:http://localhost:9876/spring-cloud-provider/api/user/1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值