forked from luyan/epmet-cloud-lingshan
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
1.0 KiB
27 lines
1.0 KiB
5 years ago
|
package com.epmet.auth;
|
||
|
|
||
|
import com.alibaba.fastjson.JSON;
|
||
|
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
|
||
|
import org.springframework.core.io.buffer.DataBuffer;
|
||
|
import org.springframework.http.HttpStatus;
|
||
|
import org.springframework.http.MediaType;
|
||
|
import org.springframework.web.server.ServerWebExchange;
|
||
|
import reactor.core.publisher.Flux;
|
||
|
import reactor.core.publisher.Mono;
|
||
|
|
||
|
import java.nio.charset.StandardCharsets;
|
||
|
|
||
|
public abstract class AuthProcessor {
|
||
|
|
||
|
abstract Mono<Void> auth(ServerWebExchange exchange, GatewayFilterChain chain);
|
||
|
|
||
|
protected Mono<Void> response(ServerWebExchange exchange, Object object) {
|
||
|
String json = JSON.toJSONString(object);
|
||
|
DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(json.getBytes(StandardCharsets.UTF_8));
|
||
|
exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON_UTF8);
|
||
|
exchange.getResponse().setStatusCode(HttpStatus.OK);
|
||
|
return exchange.getResponse().writeWith(Flux.just(buffer));
|
||
|
}
|
||
|
|
||
|
}
|