Skip to content

Commit

Permalink
第21章
Browse files Browse the repository at this point in the history
  • Loading branch information
benwang6 committed Dec 8, 2019
1 parent e18226d commit 2fec6eb
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions sp11-zuul/src/main/java/cn/tedu/sp11/filter/AccessFilter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package cn.tedu.sp11.filter;

import javax.servlet.http.HttpServletRequest;

import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
import org.springframework.stereotype.Component;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import cn.tedu.web.util.JsonResult;

@Component
public class AccessFilter extends ZuulFilter{
@Override
public boolean shouldFilter() {
//对指定的serviceid过滤,如果要过滤所有服务,直接返回 true

RequestContext ctx = RequestContext.getCurrentContext();
String serviceId = (String) ctx.get(FilterConstants.SERVICE_ID_KEY);
if(serviceId.equals("item-service")) {
return true;
}
return false;
}

@Override
public Object run() throws ZuulException {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest req = ctx.getRequest();
String token = req.getParameter("token");
if (token == null) {
//此设置会阻止请求被路由到后台微服务
ctx.setSendZuulResponse(false);
//向客户端的响应
ctx.setResponseStatusCode(200);
ctx.setResponseBody(JsonResult.err().code(JsonResult.NOT_LOGIN).toString());
}
//zuul过滤器返回的数据设计为以后扩展使用,
//目前该返回值没有被使用
return null;
}

@Override
public String filterType() {
return FilterConstants.PRE_TYPE;
}

@Override
public int filterOrder() {
//该过滤器顺序要 > 5,才能得到 serviceid
return FilterConstants.PRE_DECORATION_FILTER_ORDER+1;
}
}

0 comments on commit 2fec6eb

Please sign in to comment.