登录校验 简单实现

public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
//判断是否为登录
if (request.getURI().getPath().contains("login/in")){
//放行
return chain.filter(exchange);
}
HttpHeaders headers = request.getHeaders();
String token = headers.getFirst("token");
//拿到token 判断是否为空 为空返回客户端
if (StringUtils.isEmpty(token)){
response.setStatusCode(HttpStatus.UNAUTHORIZED);
return response.setComplete();
}
Claims claims = AppJwtUtil.getClaimsBody(token);
int result = AppJwtUtil.verifyToken(claims);
try {
//校验token 是否有效
if (result == 0 || result == -1){
Integer id = (Integer) claims.get("id");
log.info("find user_id:{} form uri:{}",id,request.getURI());
ServerHttpRequest serverHttpRequest = request.mutate().headers(httpHeaders -> {
httpHeaders.add("userId", id + "");
}).build();
exchange.mutate().request(serverHttpRequest).build();

}
} catch (Exception e) {
e.printStackTrace();
response.setStatusCode(HttpStatus.UNAUTHORIZED);
return response.setComplete();
}


return chain.filter(exchange);
}
原文地址:https://www.cnblogs.com/KingAndPig/p/14067169.html