作者 朱兆平

日志

... ... @@ -4,7 +4,7 @@ spring:
port: 6379
timeout: 60000
application:
name: gateway-server-v11
name: gateway-server-v12
profiles:
active: dev
main:
... ...
package com.example.gateway.filter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.example.gateway.model.PERMISSION;
import com.example.gateway.model.ROLE;
import com.example.gateway.model.ResponseBean;
import com.example.gateway.model.USERS;
import com.example.gateway.util.JsonToBean;
import lombok.extern.slf4j.Slf4j;
import org.reactivestreams.Publisher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
... ... @@ -27,17 +25,15 @@ import org.springframework.util.AntPathMatcher;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import javax.management.relation.Role;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
/**
* @author
* @author MRZ
* @time 2019-09-09 12:13
*/
@Component
@Slf4j
public class WrapperResponseGlobalFilter implements GlobalFilter, Ordered {
private static final String LOGIN = "user-center/login";
... ... @@ -94,7 +90,7 @@ public class WrapperResponseGlobalFilter implements GlobalFilter, Ordered {
/**
* 测试返回中文乱码
*/
ServerHttpResponseDecorator decoratedResponse = new ServerHttpResponseDecorator(response) {
ServerHttpResponseDecorator decoratedResponseWindows = new ServerHttpResponseDecorator(response) {
@Override
public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) {
if (HttpStatus.OK.equals(getStatusCode()) && body instanceof Flux) {
... ... @@ -126,7 +122,7 @@ public class WrapperResponseGlobalFilter implements GlobalFilter, Ordered {
return super.writeWith(body);
}
};
return chain.filter(exchange.mutate().response(decoratedResponse).build());
return chain.filter(exchange.mutate().response(decoratedResponseWindows).build());
//
// return chain.filter(exchange);
}
... ... @@ -149,19 +145,26 @@ public class WrapperResponseGlobalFilter implements GlobalFilter, Ordered {
if(rqHeader.containsKey("Authorization")){
token = rqHeader.get("Authorization").toString();
token = token.substring(1, token.length() - 1);
log.info("[TOKEN]-Request Authorization INFO is:[{}]",token);
}
}
String redisKey = token.replace("Bearer ", "");
log.info("[REDIS-KEY]-is:[{}]",redisKey);
String json = stringRedisTemplate.opsForValue().get(redisKey);
if (json != null) {
List<PERMISSION> permissionList = JsonToBean.jsonToUser(json);
for (PERMISSION permission : permissionList) {
log.trace("访问url:[{}]<->权限[{}]",request.getPath().toString(),permission.getUrl());
if (pathMatcher.match(permission.getUrl(), request.getPath().toString())) {
log.info("[FILTER]-[URL:{}]->鉴权成功",request.getPath().toString());
flag = true;
break;
}
}
}else {
log.info("[FILTER]-没有对应token的redis缓存,鉴权失败");
}
log.info("[FILTER]-[URL:{}]->鉴权失败",request.getPath().toString());
return flag;
}
... ... @@ -189,12 +192,13 @@ public class WrapperResponseGlobalFilter implements GlobalFilter, Ordered {
}
}
}catch (Exception e){
e.printStackTrace();
log.error("[ANONYMOUS-FILTER]匿名者过滤规则审核出错->{}",e.toString());
return false;
}
}
log.info("[ANONYMOUS-FILTER]-匿名者过滤器为适配到符合条件的规则-PATH:[{}]",request.getPath().toString());
return false;
}
}
... ...