zoukankan      html  css  js  c++  java
  • Gateway网关丢失请求头解决办法

    在搭建微服务时,本人使用的SpringSecurity Oauth2认证授权,使用密码方式,从认证中心获取了token后,要将token携带在请求头中,但是发现经过gateway网关后,token丢失了。

    经过研究后,总结了一种方法,可以解决:通过使用过滤器,重新构建一个request,再向服务发送请求。

    在网关服务增加一个bean,代码如下:

    @Component
    public class RequestAuthFilter implements GlobalFilter, Ordered {
    
    	@Override
    	public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    		ServerHttpRequest request = exchange.getRequest();
    		String url = request.getURI().getPath();
    
    		//忽略以下url
    		if(url.startsWith("/oauth") || url.startsWith("/login")){
    			return chain.filter(exchange);
    		}
    
    		String token = request.getHeaders().getFirst(HttpHeaders.AUTHORIZATION);
    		if(StringUtils.isBlank(token)){
    			ServerHttpResponse response = exchange.getResponse();
    			response.getHeaders().add(HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON_UTF8_VALUE);
    			exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
    			return exchange.getResponse().setComplete();
    		}else{
    			ServerHttpRequest req = request.mutate().headers(header -> header.add(HttpHeaders.AUTHORIZATION, token)).build();
    			ServerWebExchange webExchange = exchange.mutate().request(req).build();
    			return chain.filter(webExchange);
    		}
    	}
    
    	@Override
    	public int getOrder() {
    		return 100;
    	}
    
    }
    
  • 相关阅读:
    游戏开发热门技术浅析
    SpringMVC文件分片上传,断点续传
    浏览器文件分片上传,断点续传
    网页文件分片上传,断点续传
    Web文件分片上传,断点续传
    JavaScript文件分片上传,断点续传
    js文件分片上传,断点续传
    html5文件分片上传,断点续传
    vue文件分片上传,断点续传
    csharp文件分片上传,断点续传
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/13937694.html
Copyright © 2011-2022 走看看