当前位置: 首页 > news >正文

springCloudGateway网关配置

1.配置跨域支持

/*** 跨域支持*/
@Configuration
public class CorsConfig {@Beanpublic CorsWebFilter corsFilter() {CorsConfiguration config = new CorsConfiguration();config.addAllowedMethod("*");config.addAllowedOrigin("*");config.addAllowedHeader("*");UrlBasedCorsConfigurationSource source =new UrlBasedCorsConfigurationSource(new PathPatternParser());source.registerCorsConfiguration("/**", config);return new CorsWebFilter(source);}
}

2.yml配置

server:port: 8888
spring:profiles:active: prodapplication:name: tanhua-gatewaycloud:nacos:discovery:server-addr: 192.168.136.160:8848gateway:globalcors:add-to-simple-url-handler-mapping: truecorsConfigurations:'[/**]':allowedHeaders: "*"allowedOrigins: "*"allowedMethods:- GET- POST- DELETE- PUT- OPTIONroutes:# 探花系统- id: tanhua-app-serveruri: lb://tanhua-app-serverpredicates:- Path=/app/**filters:- StripPrefix= 1# 后台系统- id: tanhua-adminuri: lb://tanhua-adminpredicates:- Path=/admin/**# 路径截取配置filters:- StripPrefix= 1
gateway:excludedUrls: /user/login,/user/loginVerification,/system/users/verification,/system/users/login

3.网关鉴权

public class AuthFilter implements GlobalFilter, Ordered {@Value("${gateway.excludedUrls}")private List<String> excludedUrls;//需要配置不校验的连接//过滤器核心业务代码@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {//排除不需要权限检验的连接for (String excludedUrl : excludedUrls) {System.out.println(excludedUrl);}String path = exchange.getRequest().getURI().getPath();//当前请求连接System.out.println("url"+path);if(excludedUrls.contains(path)){return chain.filter(exchange);}//获取token并校验String token = exchange.getRequest().getHeaders().getFirst("Authorization");if(!StringUtils.isEmpty(token)){token=token.replaceAll("Bearer ","");}boolean verifyToken = JwtUtils.verifyToken(token);//如果校验失败,响应错误状态401if(!verifyToken){Map<String, Object> responseData = new HashMap<>();responseData.put("errCode", 401);responseData.put("errMessage", "用户未登录");return responseError(exchange.getResponse(),responseData);}return chain.filter(exchange);}//配置执行顺序@Overridepublic int getOrder() {return Ordered.LOWEST_PRECEDENCE;}private Mono<Void> responseError(ServerHttpResponse response, Map<String, Object> responseData){// 将信息转换为 JSONObjectMapper objectMapper = new ObjectMapper();byte[] data = new byte[0];try {data = objectMapper.writeValueAsBytes(responseData);} catch (JsonProcessingException e) {e.printStackTrace();}// 输出错误信息到页面DataBuffer buffer = response.bufferFactory().wrap(data);response.setStatusCode(HttpStatus.UNAUTHORIZED);response.getHeaders().add("Content-Type", "application/json;charset=UTF-8");return response.writeWith(Mono.just(buffer));}}
http://www.lryc.cn/news/140516.html

相关文章:

  • kali 2023.3新增工具
  • W25Q64 驱动--基于SPI2接口
  • 禁用无线键盘指定按键
  • 分数规划(二分)
  • Vue2向Vue3过度Vue3状态管理工具Pinia
  • STM32--SPI通信与W25Q64(1)
  • 版本控制工具Git常见用法
  • Multisim软件安装包分享(附安装教程)
  • 【android12-linux-5.1】【ST芯片】HAL移植后开机卡死
  • 线程池也就那么一回事嘛!
  • 设计模式(11)观察者模式
  • 开源的安全性:挑战与机会
  • wireshark 流量抓包例题重现
  • Smartbi电子表格软件版本更新,首次推出Excel轻应用和语音播放
  • ElasticSearch简介、安装、使用
  • Navicat 连接 mysql 问题
  • Adobe Media Encoder软件安装包分享(附安装教程)
  • [C#][原创]操作注册表一些注意点
  • “华为杯”研究生数学建模竞赛2016年-【华为杯】C题:基于无线通信基站的室内三维定位问题
  • 双目视觉之-棋盘格标定板制作
  • 自然对数底e的一些事
  • React Hooks 全解:零基础入门
  • webrtc在js里的实现
  • 熊猫:完整的初学者指南
  • 【Go】Go语言并发编程:原理、实践与优化
  • HTTPS协议加密原理
  • L1-034 点赞(Python实现) 测试点全过
  • MySQL 存储过程 循环处理数据 while repeat
  • 基于配置类方式管理 Bean
  • 最新CMS指纹识别技术