1. package com.wangbiao.config;
  2.  
  3. import com.netflix.zuul.ZuulFilter;
  4. import com.netflix.zuul.context.RequestContext;
  5. import com.netflix.zuul.exception.ZuulException;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
  8. import org.springframework.stereotype.Component;
  9.  
  10. import javax.servlet.http.HttpServletRequest;
  11.  
  12. import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.FORWARD_TO_KEY;
  13. import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.SERVICE_ID_KEY;
  14.  
  15. /**
  16. * TODO
  17. *
  18. * @author wangbiao
  19. * @Title TODO
  20. * @module TODO
  21. * @description 过滤器
  22. * @date 2021/4/10 22:21
  23. */
  24. @Slf4j
  25. @Component
  26. public class TokenFilter extends ZuulFilter {
  27. @Override
  28. public String filterType() {
  29. return FilterConstants.PRE_TYPE;//pre:路由之前;routing:路由之时;post: 路由之后;error:发送错误调用
  30. }
  31.  
  32. @Override
  33. public int filterOrder() {
  34. return FilterConstants.PRE_DECORATION_FILTER_ORDER - 1;
  35. // return 0;// 优先级0,数字越大,优先级越低
  36. }
  37.  
  38. @Override
  39. public boolean shouldFilter() {
  40. // RequestContext ctx = RequestContext.getCurrentContext();
  41. // return !ctx.containsKey(FORWARD_TO_KEY) // 判断filter是否被转发
  42. // && !ctx.containsKey(SERVICE_ID_KEY); // 判断filter是否定义了serviceId
  43.  
  44. return true;// 是否执行该过滤器,此处为true为过滤
  45. }
  46.  
  47. // shouldFilter() 为true 此方法执行
  48. @Override
  49. public Object run() throws ZuulException {
  50. RequestContext ctx = RequestContext.getCurrentContext();
  51. ctx.getResponse().setCharacterEncoding("gbk");
  52.  
  53. HttpServletRequest request = ctx.getRequest();
  54. log.info(String.format("%s -----------> %s", request.getMethod(), request.getRequestURL().toString()));
  55.  
  56. Object accessToken = request.getParameter("token");// 获取请求的参数
  57. if(accessToken == null) {
  58. ctx.setSendZuulResponse(false);// 是否允许该请求对下游进行路由
  59. ctx.setResponseStatusCode(401);// 返回错误码
  60. ctx.setResponseBody("{\"status\":401,\"message\":\"token为空!\"}");//返回错误内容
  61.  
  62. //或者也可以后端打印下try {ctx.getResponse().getWriter().write("token is null");}catch (Exception e){}
  63.  
  64. //filter-is-success保存于上下文,作为同类型下游Filter的执行开关
  65. ctx.set("filter-is-success", false);
  66. return null;
  67. }
  68. // ctx.addZuulRequestHeader("phone", phone);
  69. // ctx.addZuulRequestHeader("customerId", customerId);
  70. ctx.set("filter-is-success", true);
  71. return null;
  72. }
  73. }

package com.wangbiao.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
* TODO
*
* @author wangbiao
* @Title TODO
* @module TODO
* @description 跨域请求
* @date 2021/4/11 12:05
*/
@Configuration
public class DiyCorsConfiguration {
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);//允许cookies跨域
config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
config.setMaxAge(3600L);
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}

springcloud<zuul过滤器简单配置与跨域设置>的更多相关文章

  1. C# ASP.NET MVC/WebApi 或者 ASP.NET CORE 最简单高效的跨域设置

    概述 前面写了一篇:<C# ASP.NET WebApi 跨域设置>的文章,主要针对 ASP.NET WebApi 项目. 今天遇到 ASP.NET MVC 项目也需要设置跨域,否则浏览器 ...

  2. springmvc ajax tomcat简单配置实现跨域访问

    发现一种改动最小也能实现跨域请求的方法 服务端 服务端修改web.xml配置文件, 增加过滤器 (不用导入任何jar包, 用的tomcat自带jar) <!-- 支持跨域请求 --> &l ...

  3. C# ASP.NET WebApi 跨域设置

    概述 前后端分离开发模式,一定会遇到跨域的问题.这里收集了2种 C# Asp.Net webapi 相关的跨域解决方案,方便后续查找参考. 2021/10/28 更新: 有更加简单高效的方式推荐< ...

  4. .NET CORE 3.1.5 跨域设置

    1.Startup配置 1 #region 跨域设置 2 //注意:放到services.AddMvc()之前 3 services.AddCors(options => { 4 options ...

  5. 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...

  6. 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    一. 说在前面的话 本节主要在前面章节的基础上补充了几个简单的知识点,比如:第三方调用通过 GlobalHost.ConnectionManager.GetHubContext<MySpecHu ...

  7. Flask配置Cors跨域

    1 跨域的理解 跨域是指:浏览器A从服务器B获取的静态资源,包括Html.Css.Js,然后在Js中通过Ajax访问C服务器的静态资源或请求.即:浏览器A从B服务器拿的资源,资源中想访问服务器C的资源 ...

  8. SpringBoot2.x配置Cors跨域

    1 跨域的理解 跨域是指:浏览器A从服务器B获取的静态资源,包括Html.Css.Js,然后在Js中通过Ajax访问C服务器的静态资源或请求.即:浏览器A从B服务器拿的资源,资源中想访问服务器C的资源 ...

  9. jsonp其实很简单【ajax跨域请求】

    js便签笔记(13)——jsonp其实很简单[ajax跨域请求] 前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资 ...

随机推荐

  1. 微信小程序云开发-数据库-商品列表数据排序

    一.wxml添加升序和降序 在商品列表的wxml文件中添加超链接a标签,分别用于升序和降序的点击.分别绑定升序和降序的点击事件. 二.js文件实现升序和降序 分别写对应的按价格升序函数sortByPr ...

  2. SpringBoot读取Resource下文件的几种方式(十五)

    需求:提供接口下载resources目录下的模板文件,(或者读取resources下的文件)给后续批量导入数据提供模板文件. 方式一:ClassPathResource //获取模板文件:注意此处需要 ...

  3. 大数据学习(07)——Hadoop3.3高可用环境搭建

    前面用了五篇文章来介绍Hadoop的相关模块,理论学完还得操作一把才能加深理解.这一篇我会花相当长的时间从环境搭建开始,到怎么在使用Hadoop,逐步介绍Hadoop的使用. 本篇分这么几段内容: 规 ...

  4. 剑指 Offer 40. 最小的k个数

    剑指 Offer 40. 最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 示例 1: 输入:ar ...

  5. 洛谷P3067题解

    题面 首先,对于每个数,有三种状态:选入集合A,选入集合B,或者不选入集合.暴力枚举的时间复杂度是 \(O(n\times3^n)\) ,显然跑不过去. 因此考虑 \(\text{Meet in Mi ...

  6. 表单验证插件jquery-validation以及案例

    表单验证插件jquery-validation以及案例 1,获取并引入: (1)获取:官网:https://jqueryvalidation.org/ [home]->[files]->[ ...

  7. Java面向对象01——什么是面向对象

    面向过程&面向对象 面向过程思想(微观): 步骤清晰简单,第一步做什么,第二部做什么....... 面向过程适合处理一些较为简单的问题 面向对象思想(宏观): 物以类聚,分类的思维模式,思考问 ...

  8. webservice接口调用

    package com.montnets.emp.sysuser.biz; import org.apache.axis.client.Call; import org.apache.axis.cli ...

  9. idea启动桌面出现三个日志文件解决办法

    idea一启动就出现上图三个日志文件,soapui是一个接口测试工具插件,在setting中搜索soapui,一般不需要,卸载掉就可以了.

  10. 关于shell脚本——条件测试、if语句、case语句

    目录 一.条件测试 1.1.表达说明 1.2.test命令 文件测试 1.3.整数值比较 1.4.字符串比较 1.5.逻辑测试 二.if语句 2.1.单分支结构 2.2.双分支结构 2.3.多分支结构 ...