自定义zuul过滤器实现登录鉴权实战

1、新建filter包 2、新建类继承ZuulFilter,重写方法 3、在类顶部加注解@Comment让spring扫描

 /**
* @author WGR
* @create 2019/10/20 -- 21:19
*/
/**
* 登录过滤器
*/
@Component
public class LoginFilter extends ZuulFilter {

/**
* 过滤器类型,前置过滤器
* @return
*/
@Override
public String filterType() {
return "pre";
}

/**
* 过滤器顺序,越小越先执行
* @return
*/
@Override
public int filterOrder() {

return 4;
}


/**
* 过滤器是否生效
* @return
*/
@Override
public boolean shouldFilter() {

RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest request = requestContext.getRequest();

//System.out.println(request.getRequestURI()); ///apigateway/product/api/v1/product/list
//System.out.println(request.getRequestURL()); //http://localhost:9000/apigateway/product/api/v1/product/list

//ACL

if ("/apigateway/api/v1/order/save".equalsIgnoreCase(request.getRequestURI())){
return true;
}else if ("/apigateway/order/api/v1/order/list".equalsIgnoreCase(request.getRequestURI())){
return true;
}else if ("/apigateway/order/api/v1/order/find".equalsIgnoreCase(request.getRequestURI())){
return true;
}

return false;
}

/**
* 业务逻辑
* @return
* @throws ZuulException
*/
@Override
public Object run() throws ZuulException {

//JWT
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest request = requestContext.getRequest();

//token对象
String token = request.getHeader("token");

if(StringUtils.isBlank((token))){
token = request.getParameter("token");
}


//登录校验逻辑 根据公司情况自定义 JWT
if (StringUtils.isBlank(token)) {
requestContext.setSendZuulResponse(false);
requestContext.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
}

return null;
}



}

测试:

  • 不带token

  • 带token

最新文章

  1. dpkg用法详解
  2. JBOSS通过Apache负载均衡方法一:使用mod_jk
  3. LINUX下的时间与时区的设置
  4. LeetCode 342
  5. linux下python导出sybase 数据库 表记录的方式
  6. JAVA List与数组间相互转换
  7. C#数组的使用
  8. 运维之Linux基础(二)
  9. ubuntu设置IP地址&修改vi模式键盘上下键错位
  10. DotNetBar 控件设置空内容时显示内容
  11. spark0.8.0安装与学习
  12. 8 python time$datetime
  13. Day 2 Python 基础数据类型
  14. mysql如何查找某字段所在表
  15. Mysql 常用工具
  16. mysql常用日期、时间查询
  17. JQuery资源网站(收藏)
  18. rpmdb: Thread/process 9180/139855524558592 failed: Thread died in Berkeley DB library
  19. Codeforces Round #245 (Div. 2) B. Balls Game 并查集
  20. php格式化时间戳显示友好的时间

热门文章

  1. Spring 梳理-处理Multipart 请求
  2. 物料导出FreeMaker模板定义
  3. 特殊的ARP
  4. [LeetCode] 1108. Defanging an IP Address
  5. 配置中心-Apollo
  6. Unity动态改变物体遮挡关系
  7. html、css以及javascript的注释方式
  8. vim 的初始配置
  9. RAID5 配置,3块磁盘,2快备份
  10. Vue-cli中axios传参的方式以及后端取的方式