- 创建前置过滤器
package com.hx.apigeteway.filter; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpStatus; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER; import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE; @Component public class TokenFilter extends ZuulFilter { @Override public String filterType() { //过滤器类型 属于前缀 return PRE_TYPE; } @Override public int filterOrder() { //过滤器顺序 数字越小越靠前 return PRE_DECORATION_FILTER_ORDER - 1; } @Override public boolean shouldFilter() { // 设置为true 代表这个过滤器是否生效 return true; } //主要的处理逻辑的地方,我们做权限控制、日志等都是在这里。 @Override public Object run() throws ZuulException { RequestContext requestContext=RequestContext.getCurrentContext(); HttpServletRequest request = requestContext.getRequest(); //这里从请求头参数获取 //request.getHeader("token"); //这里从请求中参数获取 String token = request.getParameter("token"); if(StringUtils.isEmpty(token)){ requestContext.setSendZuulResponse(false); requestContext.setResponseStatusCode(HttpStatus.SC_UNAUTHORIZED); } return null; } } - 创建后置过滤器
package com.hx.apigeteway.filter; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; import java.util.UUID; import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.POST_TYPE; import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.SEND_RESPONSE_FILTER_ORDER; @Component public class AddResponseHeaderFilter extends ZuulFilter { @Override public String filterType() { return POST_TYPE; } @Override public int filterOrder() { //FilterConstants return SEND_RESPONSE_FILTER_ORDER -1; } @Override public boolean shouldFilter() { return true; } @Override public Object run() throws ZuulException { RequestContext requestContext=RequestContext.getCurrentContext(); HttpServletResponse response = requestContext.getResponse(); response.setHeader("test", UUID.randomUUID().toString()); return null; } }
SpringCloud学习笔记-服务网关-Zuul-权限校验
最新推荐文章于 2025-02-15 03:06:33 发布
本文介绍如何使用Spring Cloud Netflix Zuul创建前置和后置过滤器,实现对API网关的请求权限控制和响应头添加功能。前置过滤器用于检查请求参数中的token,后置过滤器则在响应中添加唯一标识。
3338

被折叠的 条评论
为什么被折叠?



